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.
分享到:
相关推荐
下面是根据窗口句柄获取EXE文件全路径的示例代码,该代码实现了上述步骤,并通过返回值表示是否成功获取到了路径: ```cpp #include #include // 根据窗口句柄获取该窗口EXE文件的全路径,成功返回0,失败返回...
然而,如果想进一步获取该窗体运行的完整程序路径,就需要借助一些特殊的方法或工具。在编程领域,这可以通过自定义代码来实现,特别是对于开发者来说,这样的功能可以用于调试或者识别系统中的程序行为。 "鼠标...
HWND hwndOwner, // 窗口句柄,通常为NULL LPTSTR lpszPath, // 输出缓冲区 int csidl, // 特殊文件夹ID BOOL fCreate // 是否创建不存在的文件夹 ); ``` 在本例中,`0x0026`对应的是CSIDL_PROGRAM_FILES,即64...
参数 窗口句柄, 整数型, 可空, 要显示/隐藏的窗口句柄(可空:则显示/隐藏上次的窗口,如果为初次使用则为当前窗口) .子程序 窗口置父, 整数型, 公开, 指定一个窗口的新父(返回前一个父窗口的句柄) .参数 窗口句柄, ...
4. **OpenProcess**: 要获取进程的文件路径,我们需要打开目标进程的句柄。传入进程ID和所需的访问权限(如 PROCESS_QUERY_INFORMATION),可以获取到一个进程对象。 5. **QueryFullProcessImageName**: 最后,使用...
如果你想要更改安装路径,那么就先把鼠标移到安装路径所在的那个编辑框前按Home键获取该控件的信息。 然后点击更改控件内容,在弹出的输入框里输入新的安装路径,点击确认输入,编译器就会自动记录该步骤并执行你...
这个函数的作用是根据指定屏幕坐标找到该位置所在的窗口句柄。在易语言中,我们可能需要使用到“外部调用”或者“系统调用”命令来引用这个API函数。通过传递鼠标当前位置的坐标(x,y)作为参数,我们可以得到当前...
4. **引用路径问题**:如果调用的是自定义的子程序或类方法,确保该子程序或方法所在的模块已被正确引入并加载到当前工程中。 5. **版本兼容性**:有些子程序或类方法可能在特定的易语言版本中才有,确保你使用的...
整数型 ShellExecute(窗口句柄, 操作字符串, 文件路径, 参数字符串, 工作目录, 显示模式) ``` - `窗口句柄`:通常可以设置为0,表示无父窗口。 - `操作字符串`:在这里应填写"properties",表示要显示系统属性。 - ...
#### 获取当前应用程序路径 在很多情况下,我们需要知道当前正在运行的应用程序所在的路径。这可以通过调用`GetModuleFileName`函数来实现: ```cpp TCHAR exeFullPath[MAX_PATH]; GetModuleFileName(NULL, ...
在钩子处理函数中,我们可以使用`GetActiveWindow`函数获取当前活动窗口的句柄,然后使用`GetWindowText`函数获得窗口的标题。 3. **处理钩子消息**:在钩子处理函数中,除了记录窗口名,我们还可能需要处理其他...
这个函数通常用于向用户显示信息或请求确认等交互式操作,其参数分别代表父窗口句柄、显示的消息、对话框的标题以及对话框的类型。 在这段代码中,`MessageBox`函数被用来显示`ExeFile`变量中存储的路径信息,...
子程序 取路径文件名, 文本型, 公开, 根据文件路径获取文件名 .参数 路径, 文本型, , 文件完整路径 .子程序 取线程起始地址, 整数型, 公开, 失败返回0 .参数 参数_dwThreadId, 整数型 .子程序 去除空格, 文本型, ...
- `hwnd`:调用程序的句柄,可以是NULL,表示默认窗口。 - `lpOperation`:操作类型,例如"Open"、"Print"等。在我们的案例中,通常是"Open"。 - `lpFile`:要执行的文件名,包括完整路径。 - `lpParameters`:传递...
3、新增“窗口_取激活句柄”,获取当前系统激活的窗口句柄。 4、新增“类_通用对话框”支持大窗口样式与易自带样式,2种选择。用法和易一样,完全可以替代。 5、新增“进程_取句柄数”,功能与XP系统下任务管理器一样...
19. GetCapture()函数:该函数用于获得鼠标所在窗口的句柄。它不需要指定参数。 20. GetComputerNameA()函数:该函数用于获得执行应用程序的计算机的名称。它不需要指定参数。 21. GetClassNameA()函数:该函数...
在Java中,我们可以通过特定的API来获取到程序的执行目录,这对于处理相对路径或者读取执行程序所在目录的资源文件是非常有用的。 首先,我们要理解什么是“句柄”。在Windows操作系统中,句柄是系统分配给每个对象...
一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序...