Permalänk
Medlem

hjälp med ett litet program/fil

hej

jag har noll koll på sånt här, men det är så att jag behöver ett program eller en fil som fungerar som så att när jag trycker in en knapp på tangentbordet, ska valfri .exe fil kunna startas. när man släpper knappen så ska .exe filen stängas.

går detta överhuvudtaget?

anledningen till att jag behöver det här är då jag vill skaffa en backkamera till bilen (genom att använda en webkamera). jag har redan byggt in en dator i bilen och tänkte använda ett litet program som visar webkameran i fullscreen. då vill jag att programmet ska startas när jag lägger i backen.

elektroniken för att hacka ett tangetbord och så fixar jag, men inte mjukvararan, så jag hoppas att någon kunnig har lust att hjälpa mig.

Visa signatur

...

Permalänk

Det är absolut görbart, specificera dig lite mer så kan jag nog skriva ihop något

Visa signatur

Jag ser så dåligt när jag blundar. Jag ser nästan...nästan ingenting alls.

Permalänk
Medlem

ok:D

kanon att det finns folk som kan hjälpa till.

jag har alltså ett program som heter fullscreen.exe.
när jag startar det programmet så visas min webkamera i fullscreen.

jag tänkte då att om man sliter ner ett tangentbord och kopplar lite med ett relä till backljuset, det är det inga problem med.

så det som behövs är ett program som startar fullscreen.exe när en tangent på tangentbordet hålls inne.
vilken tangent som ska hållas inne spellar ju ingen roll direkt, men för att göra det enklare kan vi säga att det ska vara knapp H.

då kopplar jag in ett relä på kretskortet vid knapp H så när backljuset tänds så hålls knappen H inne.

sen när jag lägger ur backen, och knappen H släpps så ska fullscreen.exe avslutas.

snabt förkortat: när knappen H är intryckt ska programet fullscreen.exe vara igång.

tack! och hoppas att du har möjlighet att knåpa ihop nått som fungerar:D

Visa signatur

...

Permalänk

Hej igen,
jag har suttit nån timme och försökt fått till det med det fungerar inte riktigt.
Har tyvärr inte tid att sitta mer, men om någon annan vill prova så kommer lite kod här:

För att starta/avsluta en process är det bara att använda CreateProcess och TerminateProcess, till exempel:

#include <windows.h> HANDLE StartProcess(const char *pPath, char *pArgs = 0) { STARTUPINFOA startupInfo; PROCESS_INFORMATION procInfo; memset(&startupInfo, 0, sizeof(STARTUPINFOA)); startupInfo.cb = sizeof(STARTUPINFOA); CreateProcessA(pPath, pArgs, 0, 0, false, 0, 0, 0, &startupInfo, &procInfo); return procInfo.hProcess; } void EndProcess(HANDLE hProc) { TerminateProcess(hProc, 0); }

Sen den svåra biten. Att göra så att en knapptryckning fångas av programmet. Enkelt tänkte jag, bara att installera en system-wide keyhook (i en extern DLL då):

DllMain:

BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: { hInst = (HINSTANCE)hModule; break; } case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }

Och dom exporterade funktionerna för att installera/avinstallera keyhooken:

// Exports __declspec(dllexport) HHOOK InstallKeyHook(); __declspec(dllexport) BOOL UninstallKeyHook(); HHOOK InstallKeyHook() { // Setup a message hook if (g_hHook== NULL) g_hHook= SetWindowsHookEx(WH_KEYBOARD, KeyHookProc, hGInst, 0); return g_hHook; } BOOL UninstallKeyHook() { // If gHKey is valid, unhook it BOOL result = FALSE; if (g_hHook!= NULL) { result = UnhookWindowsHookEx(g_hHook); g_hHook= NULL; } return result; }

LRESULT CALLBACK KeyHookProc(int code, WPARAM wParam, LPARAM lParam) { if (code >= 0) { // Här är problemet. Kollar man på MSDN så ser man att wParam // ska innehålla virtual key (dvs wParam == 'H' för ett event // med h-tangenten). Vidare ska det i lParam finnas en flagga // för att se om tangenten släpptes upp eller trycktes ner // men verkar inte riktigt stämma :(. // // Provade att använda GetAsyncKeyState() eller // GetKeyboardState() för att kolla om det var tangent upp/ner // men råkar då ut för något mysko problem som liknar något // typ av synkroniseringsproblem. Här tar mina kunskaper om DLL // i windows slut. } // Pass hook information on to the next hook return CallNextHookEx(gHKey, code, wParam, lParam); }

Så om någon vill prova på (eller vet vad det är för fel i KeyHookProc) så gör gärna ett eget försök. Koden ovan kanske kan vara till hjälp i alla fall.

Visa signatur

Jag ser så dåligt när jag blundar. Jag ser nästan...nästan ingenting alls.

Permalänk
Medlem

tack för att du försökte iaf!! hoppas att någon annan har lust att slutföra din kod då jag har ingen aning alls vad allt betyder:p

tack igen iaf.

Visa signatur

...

Permalänk

Annars vet jag ett program som kan göra detta åt dig! AutoHotkey, grymt mycket att ändra där och du kan välja helt själv vilka knappar som ska aktivera vad.

Visa signatur

Jag måste sluta göra så många " :) "

Permalänk
Medlem

Varför inte låta programmet vara igång hela tiden? Isf är det ju busenkelt att bara förstora upp det på en keydown och sen förminska det igen på keyup.

Varför ens förminska det överhuvudtaget? Du sitter väl knappast och surfar på datorn samtidigt som du kör?

Permalänk

En tanke:
Om du har parallell eller serieport på datorn så borde det väl vara grymt mycket lättare att sätta en knapp där eller istället? Går ju bygga på usb också men det är lite svårare.
Då är det ju dessutom enklare att kunna köra med ett vanligt tagentbord samtidigt.

Att programmet ska starta och stängas av så borde det väl gå att låta den maximera och minimera till aktivitetsfältet(system tray). Löser man problemet med interrupts vilket inte är det lättaste i windows eller en persondator för övrigt, så slipper man även att programmet drar onödiga systemresurser.

Visa signatur

[Core i7-3930K med 32GB ram, 2*256GB SSD] & [Core i7 3770K med 16 GB RAM, 256GB SSD] som tillsammans har ett [HD 5850 1GB] och 3st 24".

Permalänk
Medlem

jo, de skulle kanske gå att minimera det bara. jag har ett frontend lr va de heter istället för explorer som jag kan bläddra i musik och film mappar med, men det stöder inget för backkamera.

jag vet inte vad mitt fullscreen program tycker om att bli minimerat, har för mig att det vägrar, men de kan jag testa sen.

det vore ju bra om man bara kan minimera det, och då syns mitt frontend istället.

som ni kanske märker så e jag inte så hajj på sånt här, med de borde gå att lösa tycker jag:D

Visa signatur

...