Я использовал MouseKeyboardActivityMonitor, чтобы установить некоторые ограничения для действий пользователя, например отключить мышь.Приложение называется интерфейсом, который был Marshalled для различной ошибки потока при использовании MangementObjectSearcher
www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
У меня есть эти символы в моей форме
public partial class MyForm:Form
{
KeyboardHookListener kl;
MouseHookListener ml;
MyForm:Form()
{
ml = new MouseHookListener(new GlobalHooker());
ml.Enabled=true;
}
private void MyForm_Load
{
ml.MouseDownExt += ml_MouseDownExt;
// And same thing for Click or ...
}
private void ml_MouseDownExt(object sender,MouseEventExtArgs e)
{
e.Handled= true;
// I have got hard disk serial number here
string sn = HardDisk.Serial;
}
}
И код HardDisk.Serial
ManagementObjectSearcher s= new ManagementObjectSearcher(" SELECT *...");
foreach(var wmi in s.Get())
{
}
Я получаю ошибку, когда я нажимаю на MyForm.
Когда я построил свое решение и запустить его вручную я получаю эту ошибку
The application called an interface that was Marshalled for different thread
Stack:
at system.management.MangementException.ThrowWithExtendedInfo(Exception e) at system.management.MangementObjectSearcher.Get() at HardDisk.Get_serial() at ml_MouseDownExt(object sender,MouseEventExtArgs e) at MouseKeyboardActivityMonitor.MouseHookListener.InvokeMouseEventHandlerExt(EventHandler'1 handler,MouseEventExtArgs e)
Но когда я бегу мое решение с визуальной студии исключение будет кидаться на жестком диске. серийный на s.Get линии, я получаю это
Ошибка:
Managed debugging assistant ' DisconnectedContext' Has detected a problem in 'my app Name.exe' Transition into com context 0xa4206 for this runtime callable wrapper failed with following error : an outgoing call can't be made since the application is dispatching an input asynchronous call
Это очевидно, что две ошибки из MangementObjectSearcher class.I получить серийный номер в другом месте в Myform .errors просто occurres, когда получить последовательный в методе ml_MouseDownExt или другим способом, который был добавлен к событиям GlobalHooker .I видел MSDN. В наследство иерархии MangementObjectSearcher я вижу System.MarshalByRefObject
https://msdn.microsoft.com/en-us/library/system.management.managementobjectsearcher(v=vs.110).aspx
Я не знаю, что это связано с этими ошибками или не
Как мне избежать этих ошибок?
Не совсем понятно, что вы сделали для получения этого MDA, это, безусловно, очень плохо. Ни фрагменты, ни проект Codeproject.com не дают никаких намеков. Вернитесь в файл Program.cs и убедитесь, что метод Main() все еще имеет атрибут [STAThread]. И никогда, * никогда * не создавайте объект формы в рабочем потоке, если вы действительно не знаете, что делаете. Почти никто не делает. –