应用程序里面调用另外一个exe程序,怎么控制exe程序的显示位置?(200分)

  • 主题发起人 主题发起人 xingxingz
  • 开始时间 开始时间
X

xingxingz

Unregistered / Unconfirmed
GUEST, unregistred user!
应用程序里面调用另外一个exe程序,怎么控制exe程序的显示位置,
并且获取exe程序的界面大小。
 
用一个Windows的API函数setwindowpos就可以了,具体使用的参数可以参考一下Delphi自带的WindowsSDK.
 
调用外部程序:
ShellExecute
 
首先取得EXE的句柄,再SetWindowPos
 
调用外部程序:
ShellExecute,然后调用findwindow函数取得EXE的句柄,再SetWindowPos
 
应用程序里面调用另外一个exe程序,
ShellExecute(handle, NULL, path_to_file, NULL, NULL, SW_SHOWNORMAL)
取得可执行程序句柄
h=findwindow(nil,EXE文件的标题)
获取exe程序的界面大小。
var
R: TRect;
begin
GetWindowRect(h, R);
控制exe程序的显示位置,
SetWindowPos
 
同意用setwindowPos
 
用參數傳抵
 
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) then
begin
exit; { pointer to PROCESS_INF }
end
在StartupInfo中可以设置显示位置信息
 
ShellExecute (Handle ,'open','mplayer2',pchar(strname),0,0);
Sleep(300);
me:=FindWindow('Media Player 2',nil);
SetWindowPos(me,HWND_TOPMOST,0,0,300,300,SWP_NOACTIVATE );
 
多人接受答案了。
 

Similar threads

回复
0
查看
804
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部