AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PostMessage an FindWindow

Ein Thema von Jappa · begonnen am 22. Sep 2017 · letzter Beitrag vom 23. Sep 2017
Antwort Antwort
Jappa

Registriert seit: 19. Sep 2017
9 Beiträge
 
#1

PostMessage an FindWindow

  Alt 22. Sep 2017, 22:03
Hallo zusammen,

nachdem ich jetzt ca 5 Tage lang die Suche sowie google durchgeforstet habe, bin ich immernoch nicht auf ein, für mich gutes, endergebniss gekommen.


Ich benutze für LiveStreams und Gameplays OBS Studio, das auf HotKeys im Minimierten und Maximierten zustand reagiert.

Dafür gibt es das Elgato Stream Dreck zu kaufen, was befehle an OBS sendet und OBS führt diese dann aus, da ich aber experimentier freudig bin und keine lust habe für ein Stream Deck 150€ zu Zahlen, dachte ich mir, ich baue mir mehr oder weniger selbst eins.

Zu meiner überlegung:

Ich benutze ein Windows Tablet zum steuern von OBS und meinen PC, zum streamen. Habe nun eine TServerConnection Anwendung programmiert die auf meinem Tablet läuft und per Touch auf die Buttons befehle an meinen Computer sendet und diese ausführt. Klappt wunderbar!


Jetzt zu meinem problem:

Wie oben beschrieben, reagiert OBS Studio auf HotKeys....

Auf meinem TClient, auf meinem PC, wird der befehl z.B. Szene 1 empfangen und führt momentan eine ShowMessage mit Szene1 als Text aus, Funktioniert auch wunderbar. (Maximiert und Minimiert)

Wie ist es mir aber jetzt mit PostMessage möglich, einen HotKey an OBS zu senden, der dann auf diesen HotKey reagieren soll?

Mit KeyDB_Event, funktioniert das ganze wunderbar, aber: auch nur, wenn OBS im vordergrund ist.


Mein derzeitiger Code fürs Szenenwechsel (Szene1):

Delphi-Quellcode:
procedure TForm1.fSzene1;
var
    wnd: HWND;
    lParam: LongInt;
begin
 // ETS2
    wnd := FindWindow(nil, 'OBS 20.0.1 (64bit, windows) - Profil: Twitch - Szenen: Unbenannt');

   if wnd <> 0 then
   begin
     PostMessage(wnd, WM_KEYDOWN, VK_CONTROL, lParam);
     PostMessage(wnd, WM_KEYDOWN, VK_MENU, lParam);
     PostMessage(wnd, WM_KEYDOWN, VK_NUMPAD1, lParam);
     PostMessage(wnd, WM_KEYUP, VK_NUMPAD1, lParam);
     PostMessage(wnd, WM_KEYUP, VK_MENU, lParam);
     PostMessage(wnd, WM_KEYUP, VK_CONTROL, lParam);
   end
   else
   begin
     ShowMessage('Fenster NICHT gefunden: ');
   end;
 end;
Szene1 ist die function die ausgeführt wird, beim drücken des Szene1 Buttons auf dem Tablet.

Delphi-Quellcode:
procedure TForm1.serverClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
     Nachricht:AnsiString;
begin
Nachricht:=Socket.ReceiveText;
 if Nachricht = 'Szene1then fSzene1;
end;
wie gesagt, bis auf das PostMessage problem, funktioniert das alles Einwandfrei


Hoffe es war etwas verständlich erklärt


Gruss Jappa

Geändert von Jappa (22. Sep 2017 um 22:13 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#2

AW: PostMessage an FindWindow

  Alt 23. Sep 2017, 07:17
Hmm..

Ich denke das wird schwieriger..

Zunächst brauchst Du Infos, wie das OBS die Hotkeys entgegen nimmt..

Möglichkeiten:
- Per Windows-Messages 'WM_KEYDOWN'
- Als Simple KeyEvent
- Oder als RAW-Keyboard Event

Das letztere wird meistens von DirectX Games und ähnliches verwendet, da es mit DirectInput implementiert ist.

Ich hatte bei einem Game versucht Tastendrücke zu simulieren, leider hatte nur die 'SendInput' API funktioniert, und hier geht es nur an Apps mit Fokus.
  Mit Zitat antworten Zitat
Jappa

Registriert seit: 19. Sep 2017
9 Beiträge
 
#3

AW: PostMessage an FindWindow

  Alt 23. Sep 2017, 12:23
Hallo,

Also wie gesagt, OBS nimmt meine Befehle ohne Probleme an, aber nur wenn ich das OBS fenster vorher anklicke, und auch nur mit KeyDB_Event.


Da OBS die HotKeys auch im Minimierten zustand annimmt, auch wenn ich ein anderes fenster im Aktiven Fokus habe, ist es mir dann irgendwie möglich, generell einen tastendruck zu simulieren, als würde ich ganz normal auf die tastatur drücken?

oder Die in OBS eingestellten HotKeys Systemweit zu registrieren und dann auf diese zuzugreifen?


Gruss Jappa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz