API scherm op voorgrond

Status
Niet open voor verdere reacties.

rodojo

Gebruiker
Lid geworden
17 mrt 2008
Berichten
110
Hallo,

Is het mogelijk om met C++ een API scherm steeds op de voorgrond te houden? Dus als ik bijvoorbeeld switch tussen twee vensters, dat ondanks dat ik qua vernsters overschakel, dat mijn API venster gewoon nog op de voorgrond blijft.
 
Laatst bewerkt:
kijk hier eens naar

Code:
MB_SETFOREGROUND

    The message box becomes the foreground window. Internally, the system calls the SetForegroundWindow function for the message box.

MB_TOPMOST

    The message box is created with the WS_EX_TOPMOST window style.
 
Bedankt. Dit is inderdaad wat ik zocht. Weet je toevallig ook hoe ik hidden vensters(via ShowWindow()) kan activeren zonder dat ze verder te voor schijn komen?
 
Ik snap de vraag neit helemaal, je wilt het venster activeren zonder dat het tevoorschijn komt?
 
Ik heb een venster dat ik niet laat zien, terwijl hij dus wel op de achtergrond draait. Ik heb gemaakt dat als je bijvoorbeeld op spatie drukt, dat er dan zo'n messageBalk komt met tekst erin. Dit werkt gewoon.
Maar het probleem is is dat als je dan een ander programma activeerd(en dus mijn programmatje deactiveerd), en daarna op spatie drukt, dat er dan niks meer komt. Ik hoop dat ik een beetje duidelijk web :p
 
je kan dan beter gewoon geen windoe laten zien, maar gweoon je .exe laten draaien zonder window. dit is mogelijk. En dat als je dan op spatie drukt alsnog je MessageBox() komt.

Wat ik niet begrijp is dat als je eits anders acctiveerd je andere programma afsluit?
 
@rodojo
Misschien kan je iets proberen met SetForegroundWindow().
SetActiveWindow() samen met AttachThreadInput() zou ook kunnen werken.
AttachThreadInput() in de GlobalSetActiveWindow() zorgt ervoor dat een venster van een andere thread ook geactiveerd kan worden.
[cpp]
HWND
GlobalSetActiveWindow(HWND h)
{
HWND ret = NULL;
DWORD did, deze_did;

deze_did = GetCurrentThreadId();
did = GetWindowThreadProcessId(h,NULL);

AttachThreadInput(did, deze_did, TRUE);

ret = SetActiveWindow(h);

AttachThreadInput(did, deze_did, FALSE);

return ret;
}[/cpp]
 
Wat ik precies wil is een soort van keylogger maken. Ik wil dus dat het niet gezien word en ik run hem dus op de achtergrond. Zodra ik het programmatje compile, dan reageert ie nog op alle toets aanslagen etc.
Maar als ik bijvoorbeeld een keer op ALT+TAB druk, waardoor het programmatje dus niet meer wordt geactiveerd, dan reageert ie niet meer op een toetsaanslag. Ik heb geprobeerd via WM_ACTIVATE, als blijkt dat het niet actief is weer te activeren, maar dit lukt ook niet.


je kan dan beter gewoon geen windoe laten zien, maar gweoon je .exe laten draaien zonder window. dit is mogelijk. En dat als je dan op spatie drukt alsnog je MessageBox() komt.

Wat ik niet begrijp is dat als je eits anders acctiveerd je andere programma afsluit?
Als ik tussen programma switch, dan sluit mijn programma niet af, maar het reageert dan niet meer op de spatie-aanslag(waardoor er dus geen messagebox komt).
 
Laatst bewerkt:
oow zo, ja dit is moeilijker

Misschien moet je hier zelfs een driver voor schrijven, ik weet geen andere oplossing zo snel

euhm misschien een .dll in het betsuuryststeem kan helpen? Een Gok
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan