如题
解决方案 »
- delphi ctrl+空格问题
- 快来参加5月份在成都和上海举办的由李维主讲的“DataSnap及移动开发”技术研讨会吧
- 多个拷贝出来的edit如何按照顺便自动编号
- 如何计算今天与未来某天之间的天数?
- 在线等待,为什么我在activex中,使用TSaveDialog时,返回文件名总是乱码,我要死了,快来救命啊!
- 在线等!!菜鸟一问:用什么函数使‘空’返回为零,就像foxpro的iif...
- 一个多层数据库方面的怪问题!
- 非常菜的问题请各位指教
- 多表查询更新一定要updatesql控件吗?不用什么后果?
- 请教在Delphi6中的问题
- 类继承的问题 !
- 请教:如何写网页代码中title内容的正值表达式?
...
var
hApp: THandle;
begin
hApp := FindWindow(nil, PAnsiChar(Application.Title));
if hApp <> 0 then MoveWindow(hApp, 100, 100, 400, 300, True);
end;
...
function ObjectFromHWND(hwnd: HWND): TObject;
var
P: Longint;
begin
P := GetWindowLong(hwnd, GWL_WNDPROC);
if P > 0 then
Result := PPointer(P + Sizeof(Byte) + Sizeof(Integer) + Sizeof(Pointer))^
else
Result := nil;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add(Format('Application: %p ObjectFromHWND: %p',
[Pointer(Application), Pointer(ObjectFromHWND(Application.Handle))]));
end;
然后Application.MainForm.Handle即可得到主窗体的句柄。如果是其他进程,那么还要将代码写在DLL中,通过Hook或远程线程注入到目标进程,再调用ObjectFromHWND函数获取Application对象实例。
参考:http://www.delphibbs.com/keylife/iblog_show.asp?xid=12219
参考:http://www.delphibbs.com/keylife/iblog_show.asp?xid=12219我奇怪的是你怎么找到其他程序的Application.Handle的!?直接FindWindow找到主窗体的Handle不就结了,还非要先获得Application.Handle,然后通过它找主窗体的Handle!?