Windows Mobile gönderme anahtarı yakalamak ve belirli bir numarayı aramak olduğunuz bir yolu var mı?

oy
1

Ben Gönder tuşuna basarak birine yanıt ve telefon başvurumu seçilen numarayı aramak istiyorum kompakt bir çerçeve (NETCF) kullanarak bir Windows Mobile uygulaması vardır. tuzak Gönder tuşuna kompakt bir çerçeve kullanarak bir yolu var mı? Ben yakalama tuşları birkaç makaleye baktım ama Gönder tuşuna içeren bir ad bulamadım.

Güncelleme :

Ben Windows Mobile üzerinde bir belgesiz API SetWindowsHookEx açıklayan bir makale buldum. Bu durumda o zaman gerçekten kullanmak istemiyorum.

Windows Mobile üzerinde SetWindowsHookEx

daha arama yaptıktan sonra gönder tuşuna Windows Mobile lingo Konuş tuşu denir öğrendim. Sonra kullanıcı Konuşma tuşuna bastığında benim uygulaması bir WM_HOTKEY mesaj göndermek için sinyal OS SHCMBM_OVERRIDEKEY mesajı kullanma hakkında bir blog yazısı buldum.

Konuşma düğmesini kullanarak ilgili Jason Fuller Blog yayını

Blog yazısı ve işaret belgeleri aradığım tam olarak ne gibi görünmek. Bir çalışma örneği bulamayan değilim, ve o iş yapamıyoruz birçok insan bulabilirsiniz. VK_TTALK SmartPhone'lardan desteklenmez gibi de görünüyor. Aslında hem Smartphone ve PocketPC telefonlarda bu çalışma olan birinden duymak isteriz.

Oluştur 09/12/2008 saat 22:57
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
2

Ben SHCMBM_OVERRIDEKEY kullanarak hem PPC ve SP cihazlarda çalışır onaylayabilir. Ben WM5 PPC, WM5 SP, WM6 PPC, WM6 SP üzerinde test ettik. Henüz WM6.1 veya WM6.5 denemedim ama ben tür-of WM6 çalıştığı için çalıştıkları varsayalım.

Ayrıca siz de arama sırasında DTMF desteklemek gerekebilir?

: Bir LAP dll yazıyordu beri yararlı olabilecek aşağıdaki sayfayı takip LAP Uygulama Sorunları

Eğer C # içine çevirmek zorunda kalacak, böylece Bu örnekler C cinsindendir.

Belirli bir pencere için "konuşma" anahtarın kurulum hapsine yapmanız gereken:

SendMessage(SHFindMenuBar(window_hwnd), 
            SHCMBM_OVERRIDEKEY, 
            VK_TTALK, 
            MAKELPARAM((SHMBOF_NODEFAULT|SHMBOF_NOTIFY), (SHMBOF_NODEFAULT|SHMBOF_NOTIFY));

İstediğiniz zaman tuzak kapalı / açabilirsiniz. kolay hem de o uzakta tuzak açmak için:

SendMessage(SHFindMenuBar(window_hwnd), 
            SHCMBM_OVERRIDEKEY, 
            VK_TTALK, 
            MAKELPARAM(0, (SHMBOF_NODEFAULT|SHMBOF_NOTIFY));

'Talk' tuşu tuzak pencere proc üzerine WM_HOTKEY pencere mesajı ihtiyaç basıldığında algılamak için:

case WM_HOTKEY:
    switch(HIWORD(lParam))
    {
    case VK_TTALK:
        // make ph call
        break;
    }
    return TRUE;

Bir telefon yapmak için, "PhoneMakeCall" API kullanmak gerekir diyoruz:

#include <phone.h>

void MakePhoneCall(const wchar_t* number)
{
    PHONEMAKECALLINFO call;
    memset(&call, 0x0, sizeof(PHONEMAKECALLINFO));
    call.cbSize = sizeof(PHONEMAKECALLINFO);
    call.dwFlags = PMCF_DEFAULT;
    call.pszDestAddress = number;
    PhoneMakeCall(&call);
}

Bir telefon sırasında DTMF desteklemek için kullanmakta telefon görüşmesi izlemek gerekir diyoruz SNAPI (Ben orada size yardımcı olmak için bir C # kütüphanesi olduğuna inanıyoruz SystemProperty ).

Aramayı başlattıktan sonra Kurulum:

  #include <snapi.h>
  RegistryNotifyWindow(SN_PHONEACTIVECALLCOUNT_ROOT, SN_PHONEACTIVECALLCOUNT_PATH, SN_PHONEACTIVECALLCOUNT_VALUE, window_hwnd, callback_window_msg_number /*e.g. WM_APP */, 0, NULL, &phone_call_notify_handle);

Sen ne zaman çağrı sayısı değişiklikleri tedarik pencere mesajı ile geri çağrılacak. Kayıt defterini okumak ve çağrı sayısı sıfıra düştüğünde kontrol etmek gerekir. Eğer varsa sen SNAPI kolu kapatın gerekir:

RegistryCloseNotification(phone_call_notify_handle);

çağrısında iken kullanıcı tarafından basılan tuşun ile cprog uygulamasına bir mesaj göndermek:

#define WM_CPROG_SEND_VKEY_DTMF (WM_APP+3) // Sends the DTMF tone(s) through to the current call (converting from VKEY to DTMF chars)

  BOOL PhoneSendDTMF(UINT uvKey)
  {
    BOOL bRet = FALSE;
    static HWND s_hwndCProg = NULL;
    TCHAR chDTMF = MapVKeyToChar(uvKey);

    // Attempt to find the cprog window (MSCprog).
    // Try to keep this window handle cached.
    if(NULL == s_hwndCProg || !IsWindow(s_hwndCProg))
    {
      s_hwndCProg = FindWindow(TEXT("MSCprog"), NULL);
    }

    // Send WM_CPROG_SEND_VKEY_DTMF to the CProg window.
    if(NULL != s_hwndCProg)
    {
      bRet = BOOLIFY(PostMessage(s_hwndCProg,
                              WM_CPROG_SEND_VKEY_DTMF, (WPARAM)chDTMF, 0));
    }

    return bRet;
  }
Cevap 16/02/2009 saat 20:57
kaynak kullanıcı

oy
2

Bir keyhook yoluyla (masaüstünde ayrı CTRL + ALT + DEL itibaren) Teh dünyalar tüm anahtarları yakalamak:

Statik Harici ıntptr SetWindowsHookEx (HookType kanca, HookProc geri arama, ıntptr hMod, uint dwThreadId);

Sen (yerine user32 ait) Coredll.dll aracılığıyla CE bu (diğer bindirilmesi veya bir) kullanabilirsiniz.

Ancak bu .NET Compact Framework olmadığını ve bir P / Invoke gerektirir. "Özgür" anahtar pressery ile en iyi sevinç Form.KeyPreview = true; Bir Intermec üzerinde "Application1" tuşuyla benzer bir durum vardı, muhtemelen böyle senin "gönder" tuşu olarak (özel tuşları var cihazlarla uğraşırken ve bu sadece bazen hiçbir şey size formu odaklandığında vurulmak anahtarlarını verir ve ünite bir süre önce).

Ancak bir fantastik alternatif inanıyorum yoktur OpenNETCF ya zaten yapar ya da çok yakında keyhook ile yuvarlanacak keyifli yönetilen sarıcı açığa (yukarıdaki WinAPI çağrı yoluyla). Sevinç!

O hazır değil henüz Eğer böyle bir arama gerçekleştirmek eğer bir şey bulmak mümkün olmalıdır, en kötü ihtimalle bu yüzden Google üzerinden bu nasıl kullanıldığını göstermektedir etrafında tekme makale ve kod bolluğu varsa bu . Belki böyle bir şey bu ?

Cevap 09/12/2008 saat 23:10
kaynak kullanıcı

oy
0

Belirlenmiş kullanmayan arkasında bazı belli muhakeme var mı PhoneMakeCall ? Bu Smartphone için ve Windows Mobile 6 Professional kadar kullanılabilir.

Düzenleme: soru biraz yanlış okumuş. Sana istediğini şimdi anlıyorum tuzak Gönder olayı. Ben cevabım başvuru için olsa da, kalsın.

Cevap 13/02/2009 saat 09:30
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more