问题标签 [getmodulefilename]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如果我只有一个窗口句柄 (hWnd),我如何 GetModuleFileName()?
我正在尝试获取位于我的 C# 2.0 应用程序之外的窗口的可执行文件的名称。我的应用程序当前使用来自“user32.dll”的 GetForegroundWindow() 调用获取窗口句柄 (hWnd)。
从我能够做的挖掘来看,我想我想使用 GetModuleFileNameEx() 函数(来自 PSAPI)来获取名称,但 GetModuleFileNameEx() 需要一个进程的句柄,而不是一个窗口。
是否可以从窗口句柄获取进程句柄?(我需要先获取窗口的线程句柄吗?)
编辑了第一句话,让我更清楚我想要做什么。
更新!这是我发现对我有用的 C# 代码。唯一需要注意的是,它有时会返回驱动器号为“?”的文件/路径。而不是实际的驱动器号(如“C”)。——还没弄清楚为什么。
windows - 如何计算 GetModuleFileName 的完整缓冲区大小?
将GetModuleFileName()
缓冲区和缓冲区大小作为输入;但是它的返回值只能告诉我们复制了多少个字符,以及大小是否不够(ERROR_INSUFFICIENT_BUFFER
)。
如何确定保存整个文件名所需的实际缓冲区大小GetModuleFileName()
?
大多数人使用MAX_PATH
,但我记得路径可以超过(默认定义为 260)...
(使用零作为缓冲区大小的技巧不适用于此 API - 我之前已经尝试过)
scheme - Chicken Scheme 是否有相当于 Perl 的 $0 的功能?
如何可靠地获取 Chicken Scheme 中的脚本名称?
似乎 -ss 占用了脚本名称,因此除非我使用点斜杠来运行我的脚本,否则它是不可见的。
scriptedmain.scm:
痕迹:
clojure - 如果 __name__=="__main__",Clojure 是否与 Python 等效?
可能重复: Python 习语“if name == ' main
'”的 clojure 等价物是什么?
我会使用-main
,但它只在编译模式下运行,而不是解释模式。
我会使用(if (.isAbsolute (java.io.File. *file*)) (main *command-line-args*))
, 但这会在任何(load)
脚本中运行。
c++ - GetModuleFileNameA 返回奇怪的结果
我正在尝试获取在另一个进程中加载的模块的名称GetModuleFileNameA
。
我已经使用 dbgHelp 加载了一个符号并获得了它的模块基地址,但是发生了 2 件奇怪的事情:
1. 有时GetModuleFileNameA
返回系统错误代码 5:访问被拒绝。
2.它返回错误的模块名称。对于我知道在模块 A 中的函数,我得到模块 B 的名称...:/
有人可以帮助我吗?
谢谢:)
c++ - GetModuleFileName 防病毒误检???获取当前进程PATH
您好,我正在尝试从当前进程中检索路径...这是我的第一个代码:
但是当我试图运行它时,Avira antivir 将其检测为:TR/Dropper.Gen :D 我不知道为什么 :D 这是另一个代码:
在那个版本中,TR/Dropper.Gen 问题已修复,但是......我不想使用 WinMain () 所以没有 argv[0] 谁能知道另一种方法或函数来检索路径?不与杀毒软件冲突?
c++ - 如何从 dll 中找到 dll 的父 exe?
我需要根据加载它的进程在 dll 中做一些事情。因此,对于 Windows 编程来说相对较新,我需要帮助找出如何找到加载当前 dll 的 exe。到目前为止,我一直在对 exe 文件名进行硬编码,这是最愚蠢的事情:D
1)有人建议使用GetModuleFileName()
功能。但这似乎使我的应用程序崩溃。(我使用 0 作为模块句柄)。我没有做任何花哨的事情。我使用了以下语法
GetModuleFileName(0,&fileName,MAX_PATH)
编辑:我从这里了解到,我无法通过此调用获取 .exe 名称,因为它仅返回 dll 名称:(
2)在 DllMain 中这样做是个好主意吗?我知道 DllMain 不是做复杂事情的地方。我也了解加载程序锁定相关问题。我所需要的只是找到父进程的名称。
我很感激你的时间!
ADD:我在获取父进程ID后尝试使用GetProcessImageFileName。我收到访问冲突错误。当我尝试调试时,我注意到 openProcess 调用将我的结果参数(图像文件路径-LPTSTR)作为错误指针。
GetProcessImageFileName 调用返回错误代码 87-INVALID PARAMETER。
但是当前进程 id 是有效的 id。
这是代码
我究竟做错了什么??
谢谢
编辑重要:
我发现我正在尝试在空闲进程上使用 openprocess。(即)我忘记了我的父进程可能在我同步后等待我空闲。所以现在我得到一个坏消息,我无法使用 OpenProcess 打开空闲进程。我还能如何查看空闲进程的对象?(我确定它是空闲的,因为我在快照中找不到它。我不得不使用 enumerateprocess 来定位它的 id;但我确实使用快照中的正常进程枚举来首先找到父进程 id)
winapi - getmodulefilename 可能会阻塞什么?
我们有一个多线程应用程序。其中一个工作线程调用 GetModuleFilename 进行日志记录,我们已经看到了一个死锁,工作线程在调用 GetModuleFilename 之前持有一个锁,这将永远阻塞。
我们可以并且已经从这个锁中删除了 GetModuleFilename 调用,但仍然对死锁是如何发生的非常感兴趣。
在线阅读:http: //blogs.msdn.com/b/oldnewthing/archive/2004/01/28/63880.aspx
似乎 GetModuleFilename 将获得 loaderlock,这似乎是一个很好的死锁候选者。
但通常 loaderlock 中的线程不会执行我们自己的任何代码,除了上面链接的 dllmain 中。
可能会在 loaderlock 和另一个正在创建或销毁的工作线程上调用 dll_thread_attach 或 detach,但我看不出有任何方法会尝试获取我们正在使用的锁。
主线程也有可能尝试获取 GetModuleFilename 线程所持有的锁,而第三个线程正在持有 loaderlock 并在主线程上执行 sendmessage 或类似的阻塞?在这里,我也没有发现会发生这种情况的任何情况。
我怀疑的其他线程之一是使用 com 对象的线程。线程在开始时调用coinitialize,因此应该在单线程单元中。这里有任何与 loaderlock 交互的可能性吗?
无论如何,我们无法确定这种死锁发生的确切方式。因此,我希望获得一些想法,或者在其他情况下获得有关 loaderlock 的更多信息,以及是否有任何其他场景在可能阻塞的 loaderlock 中执行代码。
谢谢。
c++ - 比较具有相同值的两个 TCHAR 的结果为 false
我正在尝试检查我的应用程序路径,如果它不是指定路径,则移动它。我觉得我的代码很可靠,但它不能正常工作。
即使文件位于新路径中,它仍然会导致 pCheck != xPath
我从来没有收到“新位置”消息框。当显示前两个消息框时,路径是相等的......
c - 如何在 Windows 上使用 C 语言获取 AppPath 到可执行文件的目录(使用 MinGW gcc )
我的可执行文件在这个地方 --> D:\Examples\C_Pro\newApp.exe 在那个“C_Pro”文件夹中也包含几个文件(file1.txt、file2.txt、file44.exe、newApp.c)
在我的 newApp.c 文件中,我包含了一个 ShellExecute 函数来执行同一文件夹中的“file44.exe”文件,如下所示 --> ShellExecute(NULL,"open","D:\Examples\C_Pro\file44.exe",NULL ,NULL,1)
这样一切正常..
我说的是 VB 中的 AppPath 之类的东西
但情况是我想在不同的电脑上运行这个 newApp.exe 所以我想用另一台电脑中包含“newApp.exe”文件的任何路径替换“D:\Examples\C_Pro\”。(比如 C :\软件\ )
我使用 GetModuleFileName 函数获取路径,但它包含 newApp.exe 部分,我只想要新目录 PathRemoveFileSpec 函数不起作用的点。
以及 GetModuleFileName 的返回路径,如 --> D:\Examples\C_Pro\newApp.exe 但是当我们将一些路径放入 ShellEcxecute 时,需要像这样的双字节(空格序列) --> D:\Examples\C_Pro\
我怎样才能摆脱这个问题。
实际的代码片段是这样的......
但我想这样做。(这是一个虚拟函数,这里的“some_Funtion”表示虚拟函数,用于解释目的。