Programme versteckt Starten per Hotkey
-
Hallo, ich habe zwei Programme geschrieben (mit Hilfe aus diesem Forum) die ich Versteckt bzw Minimiert per HotKey Starten möchte.
Mein Problem ist. Wenn ich ein Spiel laufen habe und den HotKey drücke der eins meiner Programme Startet minimiert das Spiel. Dies will ich vermeiden, das Spiel soll weiterhin Aktiv Bleiben.
Bei einer mit "Quick Batch File Compiler" kompilierten Batch File hat es Funktioniert wenn ich die Option "ghost application" Aktiviert hatte.
Gibt es so eine "ghost application" Option bei Dev-C++ auch?
oder gibt es da andere Wege?Mein Kenntnisstand: 16 von 100 Punken
(Anfänger mit den ersten Programm erfahrungen)
OS: Windows XP Pro SP3
IDE: Dev-C++Programm 1
#include <stdio.h> #include <windows.h> //#pragma comment(lib,"winmm.lib") //für MSV C++ int main(){ FILE *coin_datei = fopen( "coin.ini", "r" ); int coin, newcoin, zerocoin=0; if( !coin_datei ){ /* printf( "Fehler beim Laden der Datei" );*/ FILE *makecoin = fopen( "coin.ini", "w" ); fprintf( makecoin, "%i", zerocoin); fclose(makecoin);} else{ fscanf( coin_datei, "%i", &coin ); /*printf( "%i\n", coin );*/ newcoin = coin + 1; fclose(coin_datei); FILE *coin_datei_neu = fopen( "coin.ini", "w" ); fprintf( coin_datei_neu, "%i", newcoin); /*printf( "%i\n", newcoin );*/ fclose(coin_datei_neu); mciSendString("open coin1.mp3", NULL, 0, NULL); mciSendString("play coin1.mp3 wait", NULL, 0, NULL); mciSendString("close coin1.mp3", NULL, 0, NULL); } return 1; }Programm 2
#include <stdio.h> #include <conio.h> #include <windows.h> #define LPT1 0x378 #define Set1 0x01 #define Set2 0x02 #define SetOff 0x00 typedef short (_stdcall *inpfuncPtr)(short portaddr); typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum); int main(void) { HINSTANCE hLib; inpfuncPtr inp32; oupfuncPtr oup32; short x; int i, bitmask, status; /* Load the library */ hLib = LoadLibrary("inpout32.dll"); if (hLib == NULL) { printf("LoadLibrary Failed.\n"); return -1; } /* get the address of the function */ inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32"); if (inp32 == NULL) { printf("GetProcAddress for Inp32 Failed.\n"); return -1; } oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32"); if (oup32 == NULL) { printf("GetProcAddress for Oup32 Failed.\n"); return -1; } /*Abfrage Start*/ FILE *lesen = fopen( "coin.ini", "r" ); int coin, newcoin; if( !lesen ) printf( "Fehler beim Laden der coin.ini Datei" ); if( !feof(lesen) ) { fscanf( lesen, "%i", &coin ); fclose(lesen); if(coin == 0) { mciSendString("open nocoin.mp3", NULL, 0, NULL); mciSendString("play nocoin.mp3 wait", NULL, 0, NULL); mciSendString("close nocoin.mp3", NULL, 0, NULL); } if(coin >= 1) { mciSendString("open start.mp3", NULL, 0, NULL); mciSendString("play start.mp3 wait", NULL, 0, NULL); mciSendString("close start.mp3", NULL, 0, NULL); status = (inp32)(LPT1); bitmask = status | Set1; (oup32)(LPT1,bitmask); Sleep(300); /*printf("Erste Bitmask %i\n",bitmask);*/ status = (inp32)(LPT1); bitmask = status ^ Set1; (oup32)(LPT1,bitmask); Sleep(800); /*printf("Zweite Bitmask %i\n",bitmask);*/ status = (inp32)(LPT1); bitmask = status | Set2; (oup32)(LPT1,bitmask); Sleep(300); /*printf("Erste Bitmask %i\n",bitmask);*/ status = (inp32)(LPT1); bitmask = status ^ Set2; (oup32)(LPT1,bitmask); /*printf("Zweite Bitmask %i\n",bitmask);*/ newcoin = coin - 1; FILE *subcoin = fopen( "coin.ini", "w" ); fprintf( subcoin, "%i", newcoin); fclose(subcoin); } } }
-
Beu kein Consolen-Programm sondern ein Windows UI Programm. Ein Fenstzer brauchst Du nicht erzeugen. In dem Fall wird keine Konsole erzeugt.
Siehe Projekt/Linker Einsellungen...
-
Das geht am besten mit drei separaten Windows-Programmen:
- Einem versteckten Programm, das die Hot-Keys bedient und alles andere veranlasst (server).
- Den per Hot-Key zu startenden Anwendungen (clients).
Dazu musst du aber ziemlich sattelfest in der WinApi-Programmierung sein und mit verschiedenen Prozessen umgehen können.
Machen lässt sich das schon, nur schnell erklären geht leider nicht.
-
ich habe mir das Programm "Windows Hotkey" gekauft das funktioniert schon Ziemlich gut mit dem Starten Des Programms.
Es War eben nur so dass das Konsolen Programm sich immer in Vordergrund gestellt hat.
Habe das Problem aber gelöst in dem ich bei Dev-C++ ein neues Projekt als Windows UI erstellt habe und da habe ich die "Standard" Werte die Vorgegeben waren gelassen eine Neue Datei Hinzugefügt die meinen Source Code Enthielt und Kompiliert. ist Zwar keine Elegante Lösung (vermute ich mal) Aber Funktioniert
-
Ich würde es so machen:
1. Anderen Benutzer anlegen, unter dem das Programm laufen soll.
2. In Systemsteuerung/GeplanteTasks einen Task für das Programm anlegen.
3. Eine startProg.bat schreiben, das sowas wie "schtasks /run /tn colinux-daemon" drin hat.
4. Verknüpfung der startProg.bat ins Menu schleppen.
5. RechteMaustaste/Eigenschaften und dort einen Hotkey festlegen.
6. Die gesparte Zeit nutzen, um sich mit dem gesparten Geld eine Kiste Bier zu holen.
-
volkard schrieb:
Ich würde es so machen:
1. Anderen Benutzer anlegen, unter dem das Programm laufen soll.
2. In Systemsteuerung/GeplanteTasks einen Task für das Programm anlegen.
3. Eine startProg.bat schreiben, das sowas wie "schtasks /run /tn colinux-daemon" drin hat.
4. Verknüpfung der startProg.bat ins Menu schleppen.
5. RechteMaustaste/Eigenschaften und dort einen Hotkey festlegen.
6. Die gesparte Zeit nutzen, um sich mit dem gesparten Geld eine Kiste Bier zu holen.das hat dann aber nicht die funktion die ich brauch.
hat ja schon geklappt mit dem Windows UI.
-
Es gibt doch in der normalen Shell schon die Möglichkeit Hotkeys zuzuordnen, wenn man nun ein Programm hat, dass kein Fenster erzegt war es das doch schon.
Warum benötigt man irgendwelche andren Programme, die Hooksund sonstiges einsetzen, wenn die Shell schon alles bietet?