窗口句柄的问题(和createprocess有关,高手请进) (20分)

Y

yayo1

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]用createprocess打开一个外部程序,怎么样得到[blue][black]外部程序的窗体句柄[/black][/blue]。[:(]
例如我打开一个游戏,它有个进入画面,我需要的是[blue]游戏主窗体的句柄[/blue]而不是这个进入画面的
请各位高手不吝赐教,刚注册,有好多问题,分不够用:(

针对一个进程建立起来的所有窗体,取得句柄啊,怎么做,类似于EnumThreadWindows
的功能
 
用 shellexec 是可以直接得到主窗口句柄的。
你非要用createprocess吗。

但好多游戏是进入DOS全屏模式的,有没有 window handle 还是个总是。
 
我是想防止调用外部程序的二次运行,且可激活
论坛里的贴子都是关于自身程序的二次运行问题
可以给些建议吗?
 
怎么回答的人少的可怜,是我的问题太菜还是太难:(
 
分太少,多给100分给你源代码!
 
怎么加分?
 
传说中的大富翁都跑哪里去了:(
 
获得进程列表,并终止 Excel 进程:
procedure TForm1.Button1Click(Sender: TObject);
var
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
Ret : BOOL;
ProcessID : integer;
s:string;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
Ret:=Process32First(FSnapshotHandle,FProcessEntry32);
Memo1.clear;
while Ret do
begin
Memo1.lines.add(FProcessEntry32.szExeFile);
s:=ExtractFileName(FProcessEntry32.szExeFile);
if s='EXCEL.EXE' then
begin
ProcessID:=FProcessEntry32.th32ProcessID;
TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,ProcessID),1);
s:='';
end;
Ret:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;
 
二次运行怎么激活啊?
 
TO:jsxjd,

那句柄怎么得到呢,而且窗口标题是动态的,不好判断啊,给我这一堆进程列表有什么用呢

我是想针对一个进程建立起来的所有窗体啊
 
或者怎么样把一个进程调到前台来?
 
执行程序的文件名来判断!!!!!!!!!!!
 
接受答案了.
 
顶部