我創建了示例項目以禁用Windows的鍵盤快捷鍵。 然後我將這個示例項目的.exe包含到我想要實現此功能的主項目 的引用中。調用引用到C#窗口應用程序的.exe
問題是,它不在我的主要項目中工作。但在我的示例項目中完美工作 。
我是否缺少類似於調用引用.exe的內容?
我不想實施示例項目的代碼到主項目 我只想引用.exe到主項目。
如何?
謝謝。
命名空間BlockShortcuts
{
public class DisableKeys
{
私人委託INT LowLevelKeyboardProcDelegate(INT NCODE,整數的wParam,參考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 static 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
}
}
提供有關您的exe中的課程的更多信息或沒有人可以幫助您我認爲 – 2009-07-28 04:30:54