C# 取外部程式标题获得进程名
外部程式就是指第三方的程式,比如QQ或正在使用别人开发的程式,取得它的进程名,然後获取它的路径.其实我也搞定了,但没有你的方法好,附上代码,可能会帮助到和我一样困惑过的人...
外部程式就是指第三方的程式,比如QQ或正在使用别人开发的程式,取得它的进程名,然後获取它的路径.
其实我也搞定了,但没有你的方法好,附上代码,可能会帮助到和我一样困惑过的人
public MODULEENTRY32 通过程式标题取得路径(string Title)
{
MODULEENTRY32 ME32 = new MODULEENTRY32();
int hWnd = FindWindow(null, Title);
int Pid = 0;
GetWindowThreadProcessId(hWnd, ref Pid);
int hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPmodule, Pid);
ME32.dwSize = Marshal.SizeOf(ME32);
bool isok = Module32First(hSnapShot, ref ME32);
return ME32;
} 展开
其实我也搞定了,但没有你的方法好,附上代码,可能会帮助到和我一样困惑过的人
public MODULEENTRY32 通过程式标题取得路径(string Title)
{
MODULEENTRY32 ME32 = new MODULEENTRY32();
int hWnd = FindWindow(null, Title);
int Pid = 0;
GetWindowThreadProcessId(hWnd, ref Pid);
int hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPmodule, Pid);
ME32.dwSize = Marshal.SizeOf(ME32);
bool isok = Module32First(hSnapShot, ref ME32);
return ME32;
} 展开
1个回答
展开全部
追问
我只知道第三方程式的标题,并不知道它的进程名怎么处理!
追答
知道标题也是可以,不过这需要调用win32api,以“计算器”为例,代码如下。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32", EntryPoint = "GetWindowThreadProcessId")]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int pid);
static void Main(string[] args)
{
IntPtr hwnd = FindWindow(null, "计算器");
int pid;
GetWindowThreadProcessId(hwnd, out pid);
var p = Process.GetProcessById(pid);
if (p != null)
{
Console.Write(p.MainModule.FileName);
Console.ReadKey();
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询