Атрибут ошибки "DllImport" недействителен для этого типа объявления. Он действителен только для объявлений "метод". Пытался добавить импорт dll перед классом в методе, но с той же ошибкой.
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace MinimizeCapture
{
class WatchForWindow
{
[DllImport("user32.dll")]
private const int SW_SHOWNORMAL = 1;
private const int SW_SHOWMINIMIZED = 2;
private const int SW_SHOWMAXIMIZED = 3;
private static ManagementEventWatcher watcher = null;
public static void StartWatching()
{
WqlEventQuery query = new WqlEventQuery("Select * From __InstanceCreationEvent Within 2 Where TargetInstance Isa 'Win32_Process'");
watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Start();
}
public static void StopWatching()
{
if (watcher != null)
{
watcher.Stop();
}
}
private static void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
ManagementBaseObject obj = (ManagementBaseObject)e.NewEvent["TargetInstance"];
string t = obj["Name"].ToString();
GetHWND(t);
}
private static void GetHWND(string wName)
{
IntPtr hWnd = FindWindow("Notepad", "Untitled - Notepad");
}
}
}
Ошибка в этой строке:
[DllImport("user32.dll")]
Я пытаюсь использовать его, поскольку FindWindow не существует.
Вы должны применить [DllImport]
в объявлении метода без тела, несущего static extern
модификаторы.
Вы можете искать переведенные объявления функций на PInvoke.net, включая соответствующие структуры, когда это необходимо. Функция FindWindow
, которая вам нужна, выглядит следующим образом:
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);