Είναι ένας τρόπος για να συλλάβει το πλήκτρο αποστολής για Windows Mobile και να το καλέσετε ένα συγκεκριμένο αριθμό εκεί;

ψήφοι
1

Έχω μια εφαρμογή των Windows Mobile χρησιμοποιώντας το συμπαγές πλαίσιο (netcf) που θα ήθελα να απαντήσω σε κάποιον πατώντας το πλήκτρο αποστολής και να έχουν το τηλέφωνο να καλέσετε τον αριθμό που επιλέγεται στην αίτησή μου. Είναι ένας τρόπος που χρησιμοποιούν το συμπαγές πλαίσιο για να παγιδεύσει το πλήκτρο αποστολής εκεί; Είδα πολλά άρθρα σχετικά με τη σύλληψη κλειδιά, αλλά δεν έχω βρει αυτό που περιλαμβάνει το πλήκτρο «Αποστολή».

Ενημέρωση :

Βρήκα ένα άρθρο που περιγράφει SetWindowsHookEx ως παράνομους API για τα Windows Mobile. Αν αυτό συμβαίνει, τότε πραγματικά δεν θέλουν να το χρησιμοποιήσουν.

SetWindowsHookEx για Windows Mobile

Μετά από να κάνει περισσότερα έρευνα ανακάλυψα ότι το πλήκτρο «Αποστολή» ονομάζεται το «Μίλα» κλειδί στο Windows Mobile κορακίστικα. Στη συνέχεια βρήκε μια θέση στο blog σχετικά με τη χρήση του μηνύματος SHCMBM_OVERRIDEKEY να σηματοδοτήσει το λειτουργικό σύστημα για να στείλετε το app μου ένα μήνυμα WM_HOTKEY όταν ο χρήστης πατήσει το πλήκτρο Talk.

Jason Fuller Blog post σχετικά με τη χρήση του κουμπιού Talk

Η ανάρτηση στο blog και η τεκμηρίωση που δείχνει να φαίνεται σαν ακριβώς αυτό που ψάχνω. Είμαι σε θέση να βρείτε ένα παράδειγμα εργασίας, και θεωρώ ότι πολλοί άνθρωποι δεν μπορούν να το κάνουν να λειτουργήσει. Φαίνεται, επίσης, όπως VK_TTALK δεν υποστηρίζεται στα smartphones. Θα ήθελα πολύ να ακούσω από κάποιον που έχει πραγματικά αυτή την εργασία και στις δύο Smartphones και PocketPC τηλέφωνα.

Δημοσιεύθηκε 09/12/2008 στις 22:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Μπορώ να επιβεβαιώσω ότι η χρήση SHCMBM_OVERRIDEKEY λειτουργεί και στις δύο συσκευές ΔΕΗ και SP. Έχω δοκιμαστεί σε WM5 ΔΕΗ, WM5 SP, WM6 ΔΕΗ, WM6 SP. Δεν έχω δοκιμάσει WM6.1 ή WM6.5 ακόμα, αλλά εγώ το είδος-του υποθέσουμε ότι εργάζονται από το WM6 λειτουργεί.

Επίσης, μπορεί να χρειαστεί να υποστηρίξουν DTMF κατά τη διάρκεια της κλήσης, καθώς;

Από έγραφα ένα dll LAP που ακολούθησε την παρακάτω σελίδα που μπορείτε να βρείτε χρήσιμες: Θέματα LAP Υλοποίηση

Αυτά τα παραδείγματα είναι το C έτσι θα πρέπει να τα μεταφράσει σε C #.

Για την παγίδευση ρύθμιση του πλήκτρου «μιλούν» για ένα συγκεκριμένο παράθυρο που πρέπει να κάνετε:

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

Μπορείτε να ενεργοποιήσετε / απενεργοποιήσετε την παγίδα ανά πάσα στιγμή. Για να ενεργοποιήσετε την παγίδα μακριά εύκολο, καθώς:

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

Για την ανίχνευση όταν το πλήκτρο «Talk» πατηθεί θα πρέπει να παγιδεύουν το μήνυμα παράθυρο WM_HOTKEY στο proc παράθυρο:

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

Για να πραγματοποιήσετε μια τηλεφωνική κλήση θα πρέπει να χρησιμοποιήσετε το «PhoneMakeCall» API:

#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);
}

Για την υποστήριξη DTMF κατά τη διάρκεια μιας τηλεφωνικής κλήσης θα πρέπει να παρακολουθείτε την τηλεφωνική κλήση χρησιμοποιώντας SNAPI (πιστεύω ότι υπάρχει ένα C # βιβλιοθήκη για να σας βοηθήσει εκεί έξω SystemProperty ).

Ρύθμιση μετά την έναρξη της κλήσης:

  #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);

Θα ζητήσει πίσω με το μήνυμα παράθυρο που παρέχετε όταν οι αλλαγές καταμέτρηση κλήση. Πρέπει να διαβάσετε το μητρώο και να βεβαιωθείτε ότι ο αριθμός κλήσης πέφτει στο μηδέν. Αν το κάνει θα πρέπει να κλείσει τη λαβή SNAPI:

RegistryCloseNotification(phone_call_notify_handle);

Ενώ στην πρόσκληση στείλετε ένα μήνυμα στην εφαρμογή cprog με το κλειδί που πατήθηκε από το χρήστη:

#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;
  }
Απαντήθηκε 16/02/2009 στις 20:57
πηγή χρήστη

ψήφοι
2

Μπορείτε να πάρετε όλα τα κλειδιά σε ερώτησής κόσμους (εκτός από το CTRL + ALT + DEL στην επιφάνεια εργασίας) μέσω ενός keyhook:

στατική extern IntPtr SetWindowsHookEx (HookType γάντζο, HookProc επανάκλησης, IntPtr Εθνικής Άμυνας, uint dwThreadId)?

Μπορείτε να χρησιμοποιήσετε αυτό (ή ένα από τα άλλα υπερισχύει) στη σήμανση μέσω coredll.dll (αντί user32).

Ωστόσο, αυτό δεν είναι στο .NET Framework Compact και απαιτεί ένα P / Invoke. Το καλύτερο χαρά με «δωρεάν» κλειδί pressery είναι Form.KeyPreview = true? και ότι σας δίνει μόνο τα πλήκτρα που να πληγούν, όταν η μορφή επικεντρώνεται και μερικές φορές τίποτα, όταν πρόκειται για συσκευές που έχουν ειδικά πλήκτρα (πιθανώς όπως το πλήκτρο «αποστολή», όπως είχα μια παρόμοια κατάσταση με το πλήκτρο «Application1» σε Intermec μονάδα λίγο πίσω).

Υπάρχει, ωστόσο, μία φανταστική εναλλακτική λύση, πιστεύω OpenNETCF είτε έχουν ήδη κάνει ή θα κυλήσει πολύ σύντομα με keyhook (μέσω της πρόσκλησης WinAPI παραπάνω) εκθέτοντας ένα ευχάριστο κατάφερε περιτύλιγμα. Χαρά!

Αν αυτό δεν είναι έτοιμο ακόμα υπάρχει μια πληθώρα άρθρων και κωδικό κλοτσιές γύρω από τα οποία καταδεικνύουν το πώς να χρησιμοποιήσετε αυτό μέσω Google, ώστε στη χειρότερη περίπτωση θα πρέπει να μπορείτε να βρείτε κάτι, αν εκτελέσετε μια αναζήτηση σαν αυτό . Ίσως κάτι σαν αυτό ;

Απαντήθηκε 09/12/2008 στις 23:10
πηγή χρήστη

ψήφοι
0

Υπάρχει κάποιο συγκεκριμένο σκεπτικό δεν χρησιμοποιείτε το καθορισμένο εκεί PhoneMakeCall ; Είναι διαθέσιμο για Smartphone και μέχρι τα Windows Mobile 6 Professional.

Επεξεργασία: Εγώ παρερμηνεύει την ερώτηση λίγο. Βλέπω τώρα ότι θα ήθελε να παγιδεύσει την αποστολή εκδήλωση. Άφησα την απάντησή μου μείνουν, όμως, για την αναφορά.

Απαντήθηκε 13/02/2009 στις 09:30
πηγή χρήστη

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