2010-05-20 69 views
0

我正在開發C#/ .NET CF 2.0應用程序:它應該與觸摸屏停用一起使用,然後,我正在尋找一種方法以編程方式打開應用程序菜單(不是Windows菜單)。如何以編程方式打開.NET CF 2.0應用程序中的應用程序菜單

尋找here我試圖代碼適應.NET CF 2,但它不工作 (沒有錯誤消息既不)

public const int WM_SYSCOMMAND = 0x0112; 
public const int SC_KEYMENU = 0xF100; 

private void cmdMenu_Click(object sender, EventArgs e) 
{ 
     Message msg = Message.Create(this.Handle, WM_SYSCOMMAND, 
      new IntPtr(SC_KEYMENU), IntPtr.Zero); 

     MessageWindow.SendMessage(ref msg); 
} 

任何想法?漢斯回答

TIA,巴勃羅


後,我編輯的代碼

Message msg = Message.Create(this.Handle, WM_SYSCOMMAND, 
    new IntPtr(SC_KEYMENU), new IntPtr(115)); // 's' key 

,並添加一個子菜單選項爲&搜索,但它並沒有任何區別

回答

0

嗯,它現在正在工作,但使用不同的方法:模擬ALT鍵。它在我的設備(Psion NEO)上做了詭計,但不在模擬器中,但現在沒問題。

這是代碼(主要是基於this post

private void cmdMenu_Click(object sender, EventArgs e) 
{ 
    const int VK_MENU = 0x12; 
    SendKey(VK_MENU); 
} 


public static void SendKey(byte key) 
{ 
    const int KEYEVENTF_KEYUP = 0x02; 
    const int KEYEVENTF_KEYDOWN = 0x00; 

    keybd_event(key, 0, KEYEVENTF_KEYDOWN, 0); 
    keybd_event(key, 0, KEYEVENTF_KEYUP, 0); 
} 

[System.Runtime.InteropServices.DllImport("coredll", SetLastError = true)] 
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 
相關問題