小编Leo*_*rdo的帖子

Delphi - 较低级别和较高级别流程之间的进程间通信

我在delphi中有一个使用管理员权限运行的小vcl应用程序,这个应用程序只接收消息和戳鼠标事件.第二个应用程序使用普通用户priveleges(低于第一个)运行,此应用程序无法向第一个应用程序发送消息.我确定原因是特权级别,更高和更低,因为如果我以更低或更高的价格运行它们,它们就会成功通信.我如何能够在IPC中从最低级别的应用程序向更高级别的应用程序发送消息?还是不可能?

这是我用来发送消息的方式:

较高的应用程序使用此代码来处理winapi.messages:

procedure TfrMouseDriver.WMCopyData(var Message: TWMCopyData);
var
  S: WideString;
  cmd, sX, sY: String;
  s2,F: String;
  WParam: WideString;
  i, z, X, Y: integer;
begin
  X := 1;
  Y := 1;
  if true then
  begin
    s:=  PWideChar(Message.CopyDataStruct.lpData);
    s2:=  PChar(Message.CopyDataStruct.lpData);
    ...
Run Code Online (Sandbox Code Playgroud)

最低级别的应用程序以这种方式发送消息:

procedure TfrPenDriver.btnIPCClick(Sender: TObject);
var
  CopyData: CopyDataStruct;
  hMouse : HWND;
  Msg : WideString;
begin

  Msg := 'CM_MOVE:000500:000230';

  hMouse := FindWindow(PCHAR('TfrMouseDriver'),nil);

  if hMouse > 0 then
  begin
    CopyData.dwData := 0;
    CopyData.lpData := PWideChar(Msg);
    CopyData.cbData := (1 + Length(Msg))*SizeOf(WideChar);
    Winapi.Windows.SendMessage(hMouse, WM_COPYDATA, 0, LPARAM(@CopyData)); …
Run Code Online (Sandbox Code Playgroud)

delphi ipc

6
推荐指数
1
解决办法
777
查看次数

今天windows的原生二进制应用程序在哪里?

好吧,尝试使用c ++ win32控制台应用程序在visual studio 2012中构建一个简单的exe,只需使用printf("-----"); 构建发布版本后,运行正常.

转移到另一个Windows 7清理安装时,在运行时我注意到MSVCP110.DLL丢失...

它不是原生应用程序??? 为什么需要extern dll?

在旧的win95中,我使用visual C 6创建了许多可执行文件,并且它可以独立运行任何dll.

我会一直用"本地"exe来重写这个dll吗?

c++ visual-studio-2012

-8
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×1

delphi ×1

ipc ×1

visual-studio-2012 ×1