作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在不同的应用程序中有两个窗口。第一个应用程序有一个按钮,可使用其窗口句柄和进程 ID 启动第二个应用程序:
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec(PChar('Second.exe ' + IntToStr(Handle) + ' ' + IntToStr(GetCurrentProcessId)), SW_SHOWDEFAULT);
end;
第二个应用程序还有一个按钮,应将前台窗口设置为第一个应用程序:
function AllowSetForegroundWindow(AHandle: HWND): Boolean; external 'user32.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
if not AllowSetForegroundWindow(StrToInt(ParamStr(2))) then begin
ShowMessage('ERROR');
Exit;
end;
SendMessage(StrToInt(ParamStr(1)), WM_APP + 1, 0, 0);
end;
第一个应用程序有一个消息处理程序,它处理 WM_APP + 1
,如下所示:
procedure TForm1.WWAppPlusOne(var Msg: TMsg);
begin
Application.BringToFront;
end;
当我启动第一个应用程序并按下按钮时,第二个应用程序启动。当我按下第二个应用程序上的按钮时,它显示错误
。
我在这里做错了什么?
最佳答案
您的 AllowSetForegroundWindow
声明不正确。您省略了调用约定。您使用的数据类型也是错误的,尽管目前这对您来说可能是良性的。
它应该看起来像这样:
function AllowSetForegroundWindow(dwProcessId: DWORD): BOOL;
stdcall; external 'user32.dll';
关于delphi - 如何使用AllowSetForegroundWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399023/
有没有办法撤消对 AllowSetForegroundWindow(ASFW_ANY) 的调用? 大图: 我希望一次运行我的 exe 的单个进程。 为实现它,进程使用命名管道相互通信,如果进程已经存在
我有一个应用程序,它本质上是一个包装另一个应用程序的“助手”应用程序。 用户与之交互的应用是由“助手”应用创建的进程,如下所示: PROCESS_INFORMATION processInfo; ST
我是一名优秀的程序员,十分优秀!