我正在编写一个必须处理智能卡读卡器的Windows服务。很多时候,当我尝试连接到插入的智能卡时,SCardConnect()失败并返回SCARD_E_SHARING_VIOLATION,这基本上意味着:Thesmartcardcannotbeaccessedbecauseofotheroutstandingconnections.很公平。我猜至少有一个其他进程试图同时访问Smart。但是有没有办法确定它是哪个进程? 最佳答案 在你的地方我会尝试使用ProcessExplorer如果您访问智能卡读卡器,查看您的应用程序打开的文件句柄。
我正在收集有关正在运行的进程的信息(例如CPU和RAM使用情况)。现在我想通过进程的PID或进程名称获取进程的版本号。我该怎么做? 最佳答案 版本号假设您确定了PID后面的exe及其路径(以便调用FileGetVersion())。Thisthread讨论如何做到这一点,并提出followingscript:#include$aProcListEx=_ProcessListEx()$yourExe="jqs.exe"If@errorThenMsgBox(48,"_ProcessListEx-Error",StringFormat("
如何判断(使用非CLRC++)给定的运行进程(通过ID)使用了哪些DLL?带有这些DLL和EXE的文件系统路径。提前谢谢你。 最佳答案 如果您尝试在代码中执行此操作,您可能正在寻找EnumProcessModules函数(或K32EnumProcessModules,具体取决于操作系统。有关详细信息,请参阅链接)。EnumProcessModulesEx可以为您提供更多信息。简单地给它一个你想知道加载了哪些模块(DLL)的进程的句柄。如果您不知道句柄,可以使用EnumProcesses找到它,如果您知道PID,则可以使用OpenPr
在任务管理器的进程资源管理器中,曾经有一个叫做“VMSize”的东西,它表示应用程序使用的不常用交换磁盘空间的数量。在Windows7进程资源管理器中,它似乎不存在。我想知道等效项是“私有(private)字节”还是“分页数据”。有什么想法吗?编辑:我知道VM是什么。只需要知道Windows7中等效的进程资源管理器列名称是什么。 最佳答案 我很确定您对工作集值感兴趣。据我了解,工作集是分配给您的应用程序并由您的应用程序引用的完整虚拟内存页面集。PrivateBytes值告诉您当前在私有(private)堆上(例如通过malloc()
我在尝试终止进程时遇到了一些麻烦,我意识到仅此站点上就有相当多的资源,但我想知道是否有其他终止应用程序的方法,而不是一些典型的方法,例如:Process[]procs=Process.GetProcessesByName("test");foreach(Processprocinprocs)proc.Kill(); 最佳答案 有Process.CloseMainWindow,它很好地要求进程退出(与Process.Kill相反,它会停止进程并可能产生负面影响)。 关于c#-在C#中终止正
是否有某种方法可以检测到程序已被Windows任务管理器的“结束进程”结束?我知道从正在结束的应用程序内部执行此操作有点不可能(除了将您的应用程序构建为驱动程序并HookZwTerminateProcess),但我想知道是否有办法从外部注意到它。我不想阻止程序终止,只是想知道它是由“结束进程”结束的(而不是通过任何其他方式)。 最佳答案 可能有更好的方法-但使用一个简单的标志怎么样?自然地,您必须将此标志保留在进程/程序内存之外的某处-例如注册表、数据库或文件系统。本质上,当应用程序启动时,您将标志设置为“True”,当应用程序通过
我正在尝试将参数发送到处理器中已有的应用程序。我正在使用Mutex来查找应用程序是否正在运行。我需要发送任何命令行参数并将该文本添加到列表框中。但是参数正在进入,但值没有被添加到列表框中。应用程序的名称是“MYAPPLICATION”,将值添加到列表框的函数是parameters()staticclassProgram{//////Themainentrypointfortheapplication.///[DllImport("user32.dll")][return:MarshalAs(UnmanagedType.Bool)]staticexternboolSetForegroun
新代码:这导致无限循环,没有返回结果。我做错了什么?==编辑==在Windows上,我尝试使用PHP更新项目。我在使用命令行时遇到问题:我想要视觉反馈(在发生冲突时很重要),所以我不想作为后台进程启动。这可能吗?我目前的代码是: 最佳答案 我会放弃exec并使用proc_open(参见http://php.net/manual/en/function.proc-open.php)这是我快速创建的一个示例,它应该适合您:array("pipe","r"),//stdin1=>array("pipe","w"),//stdout2=>a
我在一个循环中周期性地调用GetProcessTimes(),它在每次迭代中做同样的事情,但它似乎每次都产生相同的结果并且只是不时地改变。这是正常行为吗?结果不应该随着时间的推移发生一点变化吗?voidImCalledPeriodically(){staticconstDWORDdwPid=::GetCurrentProcessId();staticconstHANDLEhProc=::OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwPid);staticFILETIMEftUnused1,ftUnused2;//Unused,mandato
我有一个MFCC++应用程序,它通常在系统托盘中持续运行。它在内存中分配了一个非常广泛的对象树,当应用程序需要关闭时,这会导致应用程序需要几秒钟才能释放。我的所有对象都是使用new分配的,通常使用delete释放。如果我只是跳过删除所有的对象,为了更快地退出,如果有的话会有什么影响?Windows是否意识到进程已死并自动回收内存?我知道不释放分配的内存几乎是亵渎神明,但我想我会问问其他人的想法。应用程序仅在用户系统关闭或用户选择自行关闭程序时关闭。 最佳答案 当进程终止时,系统将回收所有资源。这包括释放内核对象的打开句柄和分配的