跨进程访问 有第三方控件

wealsh 2013-05-11 11:58:17
比如 delphi 开发的程序使用 DBGridEh

注入时dll里面只要引用了DBGridEh.pas 对方的程序马上就崩溃了,如果是原生 DBGrid 就没问题,有谁对这方面比较有研究?谢谢
...全文
279 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
郝青霞 2014-03-07
  • 打赏
  • 举报
回复
楼主兄弟说说是怎么解决的啊,我也遇到过这个问题 跨进程获取别的程序中,得到自个定义的控件怎么得到呢
鐵蛋 2013-10-05
  • 打赏
  • 举报
回复
楼主兄弟说说是怎么解决的啊,我也遇到过这个问题
wealsh 2013-05-12
  • 打赏
  • 举报
回复
已搞定谢谢。
随行的太阳 2013-05-12
  • 打赏
  • 举报
回复
sololie 2013-05-11
  • 打赏
  • 举报
回复
我测试DLL注入个个窗体,窗体里使用DBGridEh+ADO链接SQLSERVER显示数据没有问题。 你的再从其他地方找找原因
wealsh 2013-05-11
  • 打赏
  • 举报
回复
设置钩子 function ExeSniffer( // 执行嗅探 AHandle: THandle; // 窗体句柄 AParam: Integer // 附加参数 ): BOOL; stdcall; begin vSnifferInfo^.rHandle := AHandle; vSnifferInfo^.rParam := AParam; vSnifferInfo^.rHOOK := SetWindowsHookEx( WH_CALLWNDPROC, SnifferProc, HInstance, GetWindowThreadProcessId(AHandle)); Result := SendMessageTimeout(AHandle, WM_SNIFFWINDOW, 0, 0, SMTO_NORMAL, 3000, THandle(Result)) = 0; UnhookWindowsHookEx(vSnifferInfo^.rHOOK); end; initialization WM_SNIFFWINDOW := RegisterWindowMessage('SnifferLib.SniffWindow'); vMapFile := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, '~Sniffer'); if vMapFile = 0 then vMapFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(TSnifferInfo), '~Sniffer'); vSnifferInfo := MapViewOfFile(vMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); finalization UnmapViewOfFile(vSnifferInfo); CloseHandle(vMapFile); end.
wealsh 2013-05-11
  • 打赏
  • 举报
回复
initialization CoInitialize(nil); RegisterReadPropertyInterceptor(TColumnEh, TColumnEhPropertyInterceptor); RegisterReadPropertyInterceptor(TDBGridColumnsEh, TColumnsEhPropertyInterceptor); FDBGridEhDefaultStyle := TDBGridEhStyle.Create; FDBGridEhCenter := TDBGridEhCenter.Create; SortMarkerFont := TFont.Create; Bmp := TBitmap.Create; ......................... finalization //For memleak tools CoUninitialize; DestroyCursor(hcrDownCurEh); DestroyCursor(hcrRightCurEh); DestroyCursor(hcrLeftCurEh); FreeAndNil(DBGridEhIndicators); FreeAndNil(DBGridEhSortMarkerImages); ...................................
wealsh 2013-05-11
  • 打赏
  • 举报
回复
你好,加了这个也不行。
sololie 2013-05-11
  • 打赏
  • 举报
回复
记得 uses ActiveX;
sololie 2013-05-11
  • 打赏
  • 举报
回复
在你使用DBGridEh的单元加入

  initialization CoInitialize(nil);
  finalization CoUninitialize;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧