Einfüg-Modus beim Starten eines Programmes

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Einfüg-Modus beim Starten eines Programmes

Beitrag von Dieter »

Wie schalte ich den Einfügmodus beim Starten eines xbase-Programmes ein? Standardmäßig ist ja der Überschreibmodus eingeschaltet.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von georg »

Hallo, Dieter -


arbeitest Du mit XbpCRT() oder XbpDialog()? Bei reinen PM-Programmen läuft das Programm immer im Einfügemodus (Windows-Standard).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von Dieter »

Hallo Georg,

ich arbeite im Gui-Modus mit xbpDialog-Fenstern.
Wenn ich bei Programmstart mit x= AppKeyState(xbeK_INS, TRUE ) den Einfügstatus prüfe, dann erhalte ich für x kein APPKEY_TOGGLED = 2. Das bedeutet, dass sich das Programm im Überschreibmodus befindet.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von AUGE_OHR »

Dieter hat geschrieben:Wie schalte ich den Einfügmodus beim Starten eines xbase-Programmes ein? Standardmäßig ist ja der Überschreibmodus eingeschaltet.
das ist wohl wegen Cl*pper so ...

versuche es mal damit ( evtl. 2 x aufrufen )

Code: Alles auswählen

#Define VK_INSERT    0x2D
DLLFUNCTION GetKeyState( nVirtKey ) USING STDCALL FROM USER32.DLL

FUNCTION InsertLock()
LOCAL aByte := GetKeyState( VK_INSERT )
RETURN aByte[ 1 ]
gruss by OHR
Jimmy
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von Dieter »

Hallo Jimmy,
deine Function InsertLock() liefert bei jedem Aufruf .f. ( das 1. Bit von aByte ist 0 ). Das bedeutet hier nur, dass der Insert-Modus ausgeschaltet ist. Mit dieser Function kann man meiner Meinung nach den Insert-Modus nicht einschalten.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von AUGE_OHR »

hi,

es scheint als wenn ich bei "Insert" den Rest "vergessen" habe ...

hier ein Beispiel mit Numlock
statt VK_NUMLOCK 0x90
was gegen VK_INSERT 0x2D
getauscht werden müsste

https://msdn.microsoft.com/de-de/librar ... 85%29.aspx

Code: Alles auswählen

#define KEYEVENTF_EXTENDEDKEY        0x01
#define KEYEVENTF_KEYUP              0x02

DLLFUNCTION keybd_event( nVirtKey, nScanCode, nFlags, nExtra ) USING STDCALL FROM USER32.DLL

FUNCTION Numlock( lLock )
LOCAL nByte := GetKeyState( VK_NUMLOCK )

   // if nByte[1] then NumLock is ON
   IF lLock == NIL
      RETURN nByte[ 1 ]
   ELSEIF lLock .AND. !nByte[ 1 ]                           // Turn NumLock ON
      keybd_event( VK_NUMLOCK, 69, KEYEVENTF_EXTENDEDKEY, 0 )
      keybd_event( VK_NUMLOCK, 69, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 )
   ELSEIF !lLock .AND. nByte[ 1 ]                           // Turn NumLock OFF
      keybd_event( VK_NUMLOCK, 69, KEYEVENTF_EXTENDEDKEY, 0 )
      keybd_event( VK_NUMLOCK, 69, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0 )
   ENDIF

RETURN nByte[ 1 ]
gruss by OHR
Jimmy
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von Dieter »

Hallo Jimmy,

vielen Dank, damit ist das Problem gelöst!
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von AUGE_OHR »

Nachtrag : es scheint so als wenn die Function keybd_event() und mouse_event() nun endgültig unter Win 10 nicht mehr funktionieren.

statt dessen soll die Function SendInput() https://msdn.microsoft.com/de-de/librar ... 85%29.aspx verwendet werden mit den Structure(n)

MOUSEINPUT https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
INPUT https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
HARDWAREINPUT https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
gruss by OHR
Jimmy
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von Dieter »

Hallo Jimmy,
das ist keine gute Nachricht, das riecht nach unnötiger Arbeit, wenn im alten Code viele API-Funktionen mit keybd_event() und mouse_event() eingesetzt werden. Ich muss meinen Code wohl schleunigst auf einem Win10-Rechner testen!
Warum wird die Abwärtskompatibilität von Software von Seiten Microsoft einfach so geopfert?
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von AUGE_OHR »

Dieter hat geschrieben:Warum wird die Abwärtskompatibilität von Software von Seiten Microsoft einfach so geopfert?
naja ... Petzold ist ja noch NT Standard ...

und NEIN ich ändere NICHT alle keybd_event() Aufrufe sondern ändere meinen DLLCALL ( den es nur 1 x gibt )
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Einfüg-Modus beim Starten eines Programmes

Beitrag von AUGE_OHR »

gruss by OHR
Jimmy
Antworten