`
java-mans
  • 浏览: 11385086 次
文章分类
社区版块
存档分类
最新评论

根据窗口句柄获取所在程序路径

 
阅读更多
var

Form1: TForm1;


implementation


{$R *.dfm}


uses PsAPI; {GetModuleFileNameEx 函数需要它}


{根据窗口句柄获取所在程序路径的函数}

function GetProcessExePath(h: HWND): string;

var

pid: Cardinal;

pHandle: THandle;

buf: array[0..MAX_PATH] of Char;

begin

{先获取进程 ID}

GetWindowThreadProcessId(h, @pid);

{再获取进程句柄}

pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid);

{获取进程路径}

GetModuleFileNameEx(pHandle, 0, buf, Length(buf));

CloseHandle(pHandle);

Result := buf;

end;


{测试当前程序}

procedure TForm1.Button1Click(Sender: TObject);

var

path: string;

begin

path := GetProcessExePath(Handle);

ShowMessage(path);

end;


{测试记事本 - 需要随便打开一个记事本}

procedure TForm1.Button2Click(Sender: TObject);

var

wh: HWND;

path: string;

begin

wh := FindWindow('Notepad', nil);

path := GetProcessExePath(wh);

ShowMessage(path);

end;


end.

分享到:
评论

相关推荐

    易语言 茶凉专用模块

    参数 窗口句柄, 整数型, 可空, 要显示/隐藏的窗口句柄(可空:则显示/隐藏上次的窗口,如果为初次使用则为当前窗口) .子程序 窗口置父, 整数型, 公开, 指定一个窗口的新父(返回前一个父窗口的句柄) .参数 窗口句柄, ...

    非常强大MsCode脚本编译器教程,记录并生成自动安装程序路径文件.

    如果你想要更改安装路径,那么就先把鼠标移到安装路径所在的那个编辑框前按Home键获取该控件的信息。 然后点击更改控件内容,在弹出的输入框里输入新的安装路径,点击确认输入,编译器就会自动记录该步骤并执行你...

    精易模块[源码] V5.15

    3、新增“窗口_取激活句柄”,获取当前系统激活的窗口句柄。 4、新增“类_通用对话框”支持大窗口样式与易自带样式,2种选择。用法和易一样,完全可以替代。 5、新增“进程_取句柄数”,功能与XP系统下任务管理器一样...

    MFC的程序框架剖析

    一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    子程序 取路径文件名, 文本型, 公开, 根据文件路径获取文件名 .参数 路径, 文本型, , 文件完整路径 .子程序 取线程起始地址, 整数型, 公开, 失败返回0 .参数 参数_dwThreadId, 整数型 .子程序 去除空格, 文本型, ...

    Super-EC.rar

    ' 增加"取线程窗口",通过窗口线程标识获取窗口句柄,如果参数为空可获取当前线程所在的窗口句柄 ' 增加"文件操作类"中,"创建","运行" ' 修改"软件类"中,"关联后缀","删除后缀关联"使用后自动更新图标显示 ' 删除"线程...

    易语言程序免安装版下载

    “库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的对应命令名”请务必准确填写静态库中公开导出的符号...

    精通Windows.API-函数、接口、编程实例.pdf

    6.5.1 加载、释放DLL、通过句柄获取DLL相关信息 186 6.5.2 编写动态链接库、导出函数 186 6.5.3 创建动态链接库工程,配置DLL编译链接选项 188 6.5.4 运行时动态获取DLL导出函数地址并调用 189 6.5.5 声明...

    精通WindowsAPI 函数 接口 编程实例

    6.5.1 加载、释放DLL、通过句柄获取DLL相关信息 186 6.5.2 编写动态链接库、导出函数 186 6.5.3 创建动态链接库工程,配置DLL编译链接选项 188 6.5.4 运行时动态获取DLL导出函数地址并调用 189 6.5.5 声明...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text()==tr("qt")&&m...

    PT80-NEAT开发指南v1.1

    使用 NEAT 工程向导建立应用程序 ........................................................................................................ 5 编译及运行程序(模拟器下) ......................................

Global site tag (gtag.js) - Google Analytics