假设应用程序名称为d7.exe,双击程序图标 ,如果该程序已经运行了(只是最小化而已),则怎样把程序窗口最大化?谢谢各位大虾 

解决方案 »

  1.   

     程序里面你向最大话的地方写:WindowState:=wsMaximized; 
     
      或者 SendMessage(Handle,WM_SYSCOMMAND,SC_MAXIMIZE,0);发消息
      

  2.   

      如果是所有窗口都要最大话的话,你应该在程序里面都设置好为最大话。WindowState属性为wsMaximized;   如果需要判断某个窗口在不是最大话的情况下,要其最大话显示。  if Form1.WindowState<>wsMaximized then
      self.WindowState:=wsMaximized
      
      OK
      

  3.   

       双击图标的时候执行的第一个事件是主窗口的Creat,还有一个主窗口的FormShow也是比较早执行的。如果你实在不想设计的时候就最大话,而是,向用代码写的话除非你有毛病。
        
       在主窗口的FormSHoW里写上无数个
         if   Form1.WindowState <> wsMaximized   then 
        self.WindowState:=wsMaximized    if   Form2.WindowState <> wsMaximized   then 
        self.WindowState:=wsMaximized      
      

  4.   

    private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      //保存Mutex句柄
      mHandle:THandle;
      PreviousInstanceWindow:HWnd;
      Project:String;
      AppName:String;
    implementation{$R *.dfm}
    initialization
      //定义自己的项目名称,作为要创建的互斥区名,最好有自己的特点以防止重复
      Project:='RunOnlyOnce_MyProject';
      //将lpMutexAttributes设为nil,bInitialOwner设为True(即本程序拥有该互斥区)
      mHandle:=CreateMutex(nil,True,PChar(Project));
      if GetLastError=ERROR_ALREADY_EXISTS then
       //该互斥区已存在则表明已有本程序的另一个实例在运行
        begin
          ShowMessage('已经有该程序在运行');
          //保存程序标题
          AppName:=Application.Title;
          //不显示本窗口
          Application.ShowMainForm:=False;
          //改变程序标题,以使函数FindWindow找到的是前一个实例窗口
          Application.Title:='destroy me';
          //寻找前一个实例窗口句柄
          PreviousInstanceWindow:=FindWindow(nil,PChar(AppName));
          //已经找到
          if PreviousInstanceWindow<>0 then
          //如果该窗口最小化则恢复
             if IsIconic(PreviousInstanceWindow) then
               ShowWindow(PreviousInstanceWindow,SW_RESTORE)
            else
            //如果程序在后台则将其放到前台
             SetForegroundWindow(PreviousInstanceWindow);
             //中止本实例
            Application.Terminate;
          end;
        finalization
        //该互斥区对象仍存在则关闭对象
          if mHandle<>0 then
            CloseHandle(mHandle);
    end.
    以上是转自网上的资料 
      

  5.   


    procedure TForm1.FormCreate(Sender: TObject);
    begin
      self.WindowState:=wsMaximized ;
    end;
    这样不就可以了吗?
      

  6.   

    同意 一砖拍死Application.Initialize;
    //创建互斥对象
    hAppMutex := CreateMutex(nil, false, PChar('OnlyOne'));
    if (hAppMutex = 0) then
    begin
     MessageBox(0,PChar('创建互斥对象失败!'),PChar('Error'),MB_OK + MB_ICONINFORMATION);
     exit;
    end;
    //查看是否是第一次运行程序
    if ((hAppMutex <> 0) and (GetLastError() = ERROR_ALREADY_EXISTS)) then
    begin
     MessageBox(0,PChar('不是第一次运行这个程序!'),PChar('OK'),MB_OK + MB_ICONINFORMATION);
     //关闭互斥对象,退出程序
     CloseHandle(hAppMutex);
      SendMessage(FindWindow('TOnlyOneWindow',nil),WM_SYSCOMMAND,SC_MAXIMIZE,0);
     exit;
    end;
    Application.CreateForm(TOnlyOneWindow, OnlyOneWindow);
    Application.Run;
    //关闭互斥对象
    CloseHandle(hAppMutex);