假设应用程序名称为d7.exe,双击程序图标 ,如果该程序已经运行了(只是最小化而已),则怎样把程序窗口最大化?谢谢各位大虾
解决方案 »
- 股票分析软件调用数据接受引擎dll的问题;dll窗口问题
- 怪怪的问题!
- 数据库连接问题
- 关于toolbar控件上,实现ie工具栏上的后退按钮,左边是图标,右边是文字,如何设置呢?现在文字以显示出来了,但是是上下显示,我想实现图标与文
- 各位同行,在同一个端口接收TCP与UDP的问题怎么办???
- DBGridEh一列绑定空间问题
- dcom部署问题,急
- 如何格式化字符串2002-4-9 7:12:30
- 关于透明窗体的问题,请帮帮忙.
- paradox 数据库的一个文件pdoxuser.net是做什么用的, 有人知道吗?
- 高分求直接调用ZLib单元实现压缩解压缩byte数组的函数,累了一晚上都搞不定,郁闷了
- Delphi Listbox读取数据库
或者 SendMessage(Handle,WM_SYSCOMMAND,SC_MAXIMIZE,0);发消息
self.WindowState:=wsMaximized
OK
在主窗口的FormSHoW里写上无数个
if Form1.WindowState <> wsMaximized then
self.WindowState:=wsMaximized if Form2.WindowState <> wsMaximized then
self.WindowState:=wsMaximized
{ 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.
以上是转自网上的资料
procedure TForm1.FormCreate(Sender: TObject);
begin
self.WindowState:=wsMaximized ;
end;
这样不就可以了吗?
//创建互斥对象
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);