Ich erstellte Beispielprojekt, um die Tastenkombinationen von Windows zu deaktivieren. Dann habe ich die .exe dieses Beispielprojekts in die Referenz meines Hauptprojekts aufgenommen, wo ich diese Funktion implementieren möchte.Aufrufen einer EXE mit Bezug auf die C# Windows-Anwendung
Problem ist, es funktioniert nicht in meinem Hauptprojekt. Aber funktioniert perfekt in meinem Beispielprojekt.
Fehle ich etwas wie das Aufrufen der referenzierten .exe?
Ich möchte nicht den Code des Beispielprojekts zum Hauptprojekt implementieren ich möchte nur die .exe auf das Hauptprojekt verweisen.
WIE?
Danke.
Namespace BlockShortcuts
{
public class DisableKeys
{
Private delegieren int LowLevelKeyboardProcDelegate (int nCode, int WParam, ref KBDLLHOOKSTRUCT lParam);
[DllImport("user32.dll", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi)]
private static extern int SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, int hMod, int dwThreadId);
[DllImport("user32.dll")]
private statisch extern int UnhookWindowsHookEx (int hHook);
[DllImport("user32.dll", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi)]
private static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);
const int WH_KEYBOARD_LL = 13;
private int intLLKey;
private struct KBDLLHOOKSTRUCT
{
public int vkCode;
int scanCode;
public int flags;
int time;
int dwExtraInfo;
}
private int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam)
{
bool blnEat = false; switch (wParam)
{
case 256:
case 257:
case 260:
case 261:
//Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key
if (((lParam.vkCode == 9) && (lParam.flags == 32)) ||
((lParam.vkCode == 27) && (lParam.flags == 32)) ||
((lParam.vkCode == 27) && (lParam.flags == 0)) ||
((lParam.vkCode == 91) && (lParam.flags == 1)) ||
((lParam.vkCode == 92) && (lParam.flags == 1)) ||
((true) && (lParam.flags == 32)))
{
blnEat = true;
}
break;
} if (blnEat) return 1; else return CallNextHookEx(0, nCode, wParam, ref lParam);
}
public void DisableKeyboardHook()
{
intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc), System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0);
}
private void ReleaseKeyboardHook()
{
intLLKey = UnhookWindowsHookEx(intLLKey);
}
#endregion
}
}
Stellen Sie weitere Informationen über Klassen in Ihrer exe oder niemand kann Ihnen helfen Ich denke, –