C - Win-32 Konsolenanwendung - Fokus auf Anwendung legen und Input geben
Das Ziel ist, dass alle 10 Minuten ein vorgegebener Input erfolgt.
Bisher war das www nicht hilfreich, deswegen bitte ich euch um Rat.
Hey leute,
ich möchte eine einfache Anwendung schreiben, die es mir ermöglicht an ein vorgegebenes Fenster einen Input zu senden.
Das Fenster soll nicht in den Vordergrund springen, ist aber ganz normal geöffnet und in der Taskleiste erreichbar.
Deswegen soll nur die geschriebene Anwendung kurzzeitig den Fokus auf mein vordefiniertes Fenster haben, ohne mich alle 10 minuten zu behindern.
Ich habe zahlreiche Foren durchsucht, aber immerwieder nur halbe Antworten gefunden - undurchsichtige Erklärungen.
Da ich bisher noch keine Arbeiten mit Fenstern gemacht habe, wäre ein Code-beispiel sehr hilfreich!
Als mögliches Beispiel dazu - Fokus auf ein bereits geöffnetes Editorfenster mit dem Titel "Unbenannt - Editor" legen und alle 10 Minuten eine 1 senden.
Gruß Shaddy
Bisher war das www nicht hilfreich, deswegen bitte ich euch um Rat.
Hey leute,
ich möchte eine einfache Anwendung schreiben, die es mir ermöglicht an ein vorgegebenes Fenster einen Input zu senden.
Das Fenster soll nicht in den Vordergrund springen, ist aber ganz normal geöffnet und in der Taskleiste erreichbar.
Deswegen soll nur die geschriebene Anwendung kurzzeitig den Fokus auf mein vordefiniertes Fenster haben, ohne mich alle 10 minuten zu behindern.
Ich habe zahlreiche Foren durchsucht, aber immerwieder nur halbe Antworten gefunden - undurchsichtige Erklärungen.
Da ich bisher noch keine Arbeiten mit Fenstern gemacht habe, wäre ein Code-beispiel sehr hilfreich!
Als mögliches Beispiel dazu - Fokus auf ein bereits geöffnetes Editorfenster mit dem Titel "Unbenannt - Editor" legen und alle 10 Minuten eine 1 senden.
Gruß Shaddy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189430
Url: https://administrator.de/contentid/189430
Ausgedruckt am: 20.11.2024 um 12:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
muss es unbedingt C sein?
Vielleicht geht so was mit AutoIt leichter?
Sieh dir mal dies an http://www.autoit.de/index.php?page=Thread&threadID=32212
Henning
muss es unbedingt C sein?
Vielleicht geht so was mit AutoIt leichter?
Sieh dir mal dies an http://www.autoit.de/index.php?page=Thread&threadID=32212
Henning
Hallo Shaddy!
Das beißt sich etwas, oder?
Grundsätzlich ist es so, dass ein Keyboard Input für ein Fenster wirksam ist, das auch den Focus besitzt. Genau das würde dich aber "alle 10 Minuten behindern", nicht wahr? Workaround wäre hier ein PostMessage, was aber nicht wirklich eine Emulation des Keyboards darstellt. Für dein Notepad Beispiel ist das aber nebensächlich (und solange du nicht angibst für was du dies tatsächlich benötigst, ...).
Grüße
rubberman
Zitat von @Shaddy:
Das Fenster soll nicht in den Vordergrund springen
[...]
Fokus auf ein bereits geöffnetes Editorfenster mit dem Titel "Unbenannt - Editor" legen
Das Fenster soll nicht in den Vordergrund springen
[...]
Fokus auf ein bereits geöffnetes Editorfenster mit dem Titel "Unbenannt - Editor" legen
Das beißt sich etwas, oder?
Grundsätzlich ist es so, dass ein Keyboard Input für ein Fenster wirksam ist, das auch den Focus besitzt. Genau das würde dich aber "alle 10 Minuten behindern", nicht wahr? Workaround wäre hier ein PostMessage, was aber nicht wirklich eine Emulation des Keyboards darstellt. Für dein Notepad Beispiel ist das aber nebensächlich (und solange du nicht angibst für was du dies tatsächlich benötigst, ...).
#ifndef WINVER
#define WINVER 0x0501 {{comment_single_line_double_slash:0}}
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501 {{comment_single_line_double_slash:0}}
#endif
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif
#include "windows.h"
int main(void)
{
const WCHAR* szWindowName = L"Unbenannt - Editor";
const WCHAR* szClassName = L"Edit";
const WPARAM wparam = '1';
const DWORD dwWait = 600000; /* 10 min = 600.000 ms */
HWND hwndNotepad;
HWND hwndTarget;
hwndNotepad = FindWindow(NULL, szWindowName);
if (hwndNotepad)
{
while (1)
{
hwndTarget = FindWindowEx(hwndNotepad, NULL, szClassName, NULL); /* Das Editorfenster in Notepad. */
if (hwndTarget)
PostMessage(hwndTarget, WM_CHAR, wparam, 0);
else
return 0;
Sleep(dwWait);
}
}
return 0;
}
Grüße
rubberman