有了hinstance怎么得到hwnd??(急急急)(100分)

  • 主题发起人 主题发起人 rou
  • 开始时间 开始时间
R

rou

Unregistered / Unconfirmed
GUEST, unregistred user!
用shellexecute得到hinstance,
无法用findwindow来得到hwnd.
怎么得到hinstance对应的hwnd??
救救我.
 
怎么没人帮我??//cry
 
这里有段代码看对你有无帮助
type
TExecState = (esNormal, esMinimized, esMaximized, esHidden);

const
ShowCommands: array[TExecState] of Integer =
(SW_SHOWNORMAL, SW_MINIMIZE, SW_SHOWMAXIMIZED, SW_HIDE);

function FileExecute(const FileName, Params, StartDir: string;
InitialState: TExecState): THandle;
begin
Result := ShellExecute(Application.Handle, nil, PChar(FileName),
PChar(Params), PChar(StartDir), ShowCommands[InitialState]);
end;

得到记事本句柄
myHWnd:=FindWindow('Notepad',nil);
要向记事本传递字串,还得要枚举出Edit子窗口
 
我曾经在M$站点上看到一篇文章讲这个的,但是具体内容我忘了...
不过它的原理就是遍历一遍当前的窗口,用遍历得到的每个HWND求得该窗口对应
的Instance,然后一个一个比较看是否是你要找的Instance
 
我觉得 ShellExecute 得到的 HInstance 是不是有用
 
cAkk说得很对, Application 的Instance就是用来区别哪些Window属于当前的
Application的.可以用EnumWindow来遍历Wnd,在EnumWindowProc里面通过这个
Instance来判断该窗口是否属于当前的Application,如果是返回True.

详细的可以参考Win32 Api的帮助文件
 
right after you call shellexecute, use getforegroundwindow to get
the hwnd of the program you have just run
 
同意 pipi, hInstance 不知道有什么用,好象与资源有关吧,

btw 我昨天写了一个帖子,怎么没有了,
 
用了hllu的方法,不灵.
我需要多次使用getforegroundwindow得到的handle,
但想要用setforegroundwindow(handle)使窗口置于最前面时,总是不行,why???
 
多人接受答案了。
 
后退
顶部