相关疑难解决方法(0)

.netFramwork 4中的FileSystemWatcher有多可靠?

有没有人在框架4中使用过FileSystemWatcher并且遇到过任何问题?

我在Windows服务中使用它,我无法承受它失败.

我从朋友那里听说它不太可靠,但我现在已经测试了几个小时,我没有遇到任何问题,但我仍然怀疑使用它.....

我将不胜感激任何有关此事的建议,我不想将应用程序交付给客户,然后意识到这件事会崩溃....

谢谢


谢谢你们的建议

我想我的目的应该没问题.它将检查服务器本地驱动器上的文件夹,所有检查是否文件已被修改,所以我认为它应该没问题

.net filesystemwatcher

21
推荐指数
1
解决办法
4933
查看次数

获取进程主线程的句柄

我在一些小型测试应用程序中创建了一个额外的线程,并希望从这个额外的线程中挂起主线程.附加线程是通过CreateRemoteThread外部进程创建的.

由于SuspendThread需要一个HANDLE应该挂起的线程,我想知道如何HANDLE从我的附加线程中运行的代码中获取它.

c++ windows multithreading dll-injection

14
推荐指数
3
解决办法
3万
查看次数

将消息发送到Windows进程(而不是其主窗口)

我有一个应用程序,在后续启动时检测是否已经运行了同名的进程,如果是,则激活正在运行的应用程序窗口,然后退出.

问题是主窗口可能被隐藏(只有通知区域图标可见),因此没有窗口句柄.

在启动时,前一个实例的MainWindowHandle属性为0,所以我无法发送ShowWindowPostMessage.

有没有办法可以发送一条可以被正在运行的应用程序截获的消息,从而允许它显示其主窗口?

该应用程序是用C#编写的,我正在使用以下代码实现此目的.

[STAThread]
static void Main()
{
    bool createdNew = true;
    using (Mutex mutex = new Mutex(true, "MyMutexName", out createdNew))
    {
        if (createdNew)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
        else
        {
            Process current = Process.GetCurrentProcess();
            foreach (Process process in Process.GetProcessesByName(current.ProcessName))
            {
                if (process.Id != current.Id)
                {
                    Interop.WINDOWINFO pwi = new Interop.WINDOWINFO();
                    IntPtr handle = process.MainWindowHandle;
                    var isVisible = Interop.GetWindowInfo(handle, ref pwi);
                    if (!isVisible)
                    {
                        MessageBox.Show(Constants.APP_NAME + " is already running, check …
Run Code Online (Sandbox Code Playgroud)

.net c# windows interop

9
推荐指数
2
解决办法
3万
查看次数

如何通过进程ID而不是窗口句柄将消息发送到特定进程?

要解决GenerateConsoleCtrlEvent的限制,我必须创建一个中间"中间人"进程来处理启动一些控制台应用程序.该进程的主要目的是在自身上调用GenerateConsoleCtrlEvent,导致自身和所有子进程干净地关闭以响应ctrl + break信号(而不是使用Process.Kill).这种需要源于GenerateConsoelCtrlEvent基本上没有效果,除非进程组id为零,这意味着它只对调用进程组本身有效.请参阅:https://stackoverflow.com/a/2431295/88409

所以无论如何...我已经创建了这个中间过程,它启动了一个在处理特定用户定义消息的表单上调用Application.Run的线程.

我的问题是......如何向这个进程发送消息来控制它?

我有Process对象及其进程ID,但这就是全部.Process.MainWindowHandle为零.

因此,我需要一种方法将消息发送到特定进程或将消息广播到特定进程中的所有窗口.

FindWindow不是一个选项,因为它试图在任何进程上按名称和类标识一个窗口,这是不可靠的.我想在没有歧义的情况下向特定进程发送消息.

.net c# sendmessage inter-process-communicat

2
推荐指数
2
解决办法
2万
查看次数