激活另一个进程的窗口
时间:2011-12-28
来源:互联网
Mutex:=CreateMutex(NIL,True,'SingleApp'); IF GetLastError<>ERROR_ALREADY_EXISTS THEN//如果不存在另一实例 BEGIN Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; END; ReleaseMutex(Mutex);
上面这段代码会在程序执行时 如果已经运行就自动关闭
我想在关闭之前激活已经打开的进程的窗口 请问如何实现

作者: ndscndscnd 发布时间: 2011-12-28
作者: ndscndscnd 发布时间: 2011-12-28
Application.CreateForm(TForm1, Form1);
Application.Run;
我可没看到代码里有如果已经运行就自动关闭,只有释放mutex
想激活别的窗口用bringwindowtotop或者SetForegroundWindow都可以,不过要先知道窗口句柄,至于像调用其中的函数,需要dll注入了
作者: funxu 发布时间: 2011-12-28
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
const
CM_RESTORE=WM_USER+$1000;{自定义的“恢复”消息}
MYAPPNAME='MyDelphi';//重新定义窗体类名。
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure CreateParams(var Params: TCreateParams); override;
Procedure RestoreRequest(var message: TMessage); message CM_RESTORE;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := MYAPPNAME;
end;
procedure TForm1.RestoreRequest(var message: TMessage);
begin
if IsIconic(Application.Handle) then
Application.Restore
else
Application.BringToFront;
end;
end.
工程中:
program ChongKai;
uses
Forms,
windows,
messages,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
const
CM_RESTORE = WM_USER + $1000; {自定义的“恢复”消息}
MYAPPNAME = 'MyDelphi';
var
RvHandle : hWnd;
begin
RvHandle := FindWindow(MYAPPNAME,0);
if RvHandle > 0 then
begin
PostMessage(RvHandle, CM_RESTORE, 0, 0);
Exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
作者: mwy654321 发布时间: 2011-12-28
procedure TForm1.Button1Click(Sender: TObject);
begin
SwitchToThisWindow(findwindow(nil,'程序标题'),true);
end;
如果是隐藏的窗体,可以先枚举找出它的handle,再调用此函数
作者: kaikai_kk 发布时间: 2011-12-28
是不是还要激活进程啊
作者: ndscndscnd 发布时间: 2011-12-28
用勾子方法即可
作者: sgzhou12345 发布时间: 2011-12-28
获取句柄,得到焦点
用勾子方法即可
你指的是进程吗?
作者: ndscndscnd 发布时间: 2011-12-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28