Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.net监视非托管程序_C#_C++_.net_Events_Exe - Fatal编程技术网

C# 使用.net监视非托管程序

C# 使用.net监视非托管程序,c#,c++,.net,events,exe,C#,C++,.net,Events,Exe,我有一个使用c++,编写的exe程序 我想在exe打开、关闭或最小化时执行一些操作 我想知道使用c#net?是否可以发送windows消息。 还可以使用管道名称控制窗口 A simple message pump looks like this: [Serializable, StructLayout(LayoutKind.Sequential)] public struct MSG { public IntPtr hwnd; public int message; pu


我有一个使用
c++

编写的exe程序 我想在
exe
打开、关闭或最小化时执行一些操作

我想知道使用
c#net

是否可以发送windows消息。 还可以使用管道名称控制窗口

A simple message pump looks like this:
[Serializable, StructLayout(LayoutKind.Sequential)]
public struct MSG
{
    public IntPtr hwnd;
    public int message;
    public IntPtr wParam;
    public IntPtr lParam;
    public int time;
    public int pt_x;
    public int pt_y;
}

[DllImport("user32.dll", CharSet = CharSet.Ansi)]
public static extern bool GetMessage([In, Out] ref MSG msg, IntPtr hWnd, int MsgFilterMin,  int uMsgFilterMax);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr DispatchMessage([In] ref MSG msg);


[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern uint RegisterWindowMessage(string lpString);

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);


    // #1
    MSG msg = new MSG();
    while (GetMessage(ref msg, IntPtr.Zero, 0, 0))
    {
        DispatchMessage(ref msg);
    }

    // #2
    uint UWM_UART_CTRL_TRS = Win32Api.RegisterWindowMessage("BT_UARTCTRL_TRANSFER");
    Win32Api.SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, (IntPtr)0, (IntPtr)0);

    // #3
    uint UWM_UART_CTRL_TRS = Win32Api.RegisterWindowMessage("BT_UARTCTRL_TRANSFER");
    Win32Api.SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, (IntPtr)1, (IntPtr)0);

本机.NET
进程
类具有用于

此外,还对C#中的过程监控进行了部分讨论

考虑到这一点,您必须使用跟踪范围广泛的特定流程事件