setfocus ? activewindow? Screenshot!



  • Moin,

    kurze Frage. Wirhaben uns ein Tool programmieren lassen, das alle 4 Min ein Screenshots macht, abr nur Wenn Cstrike das Fenster ist das Fokus hat. Verliert cstrike den Fokus und die zeit ist rum, wird kein screen ausgelöst und der counter beginnt von vorne. Leider kan es in letzter Zeit auch dazu das Screenshots ausgelöst wurden als der User im Browser war. Grund war wahrscheinlich (ziemlich sicher), das der Prozess schon Fokus bekam, der Counter grade bei 0 war und das Fenster aber noch nicht aktiv. Manchmal hat man das Problem bei CS wenn man zurückswitcht vom broswer zum Spiel das es 2-3 sekunden dauert. Hat jmd. eine Idee wie man diese Screens verhindern koennte?

    Danke
    Rene



  • man kann doch sicher z.B. immer nur Screen machen von Fenster A(cstrike)und wenn Fenster B(Desktop,Browser etc) im Fordergrund ist, soll trotzdem screen von fenster A gemacht werden. Der kann auch ruhig schwarz sein oder so. Hauiptsache kein browser screen oder so.....

    Rene


  • Mod

    Kannst du nicht einfach die HWND Handles vergleichen?
    Wie genau machst du den Screenshot? Wie ermittelst du das richtige Fenster?

    Zeig evtl. auch mal was Code, dann bieten sich da evtl. Ansätze.



  • //Header
    HWND focus;
    
    // Source
    const QString
    Primary::locateCurrentWindow()
    {
    	qDebug() << __FUNCTION__;
    	int zeichern = 0;
    	TCHAR WindowText[256];
    	focus = GetForegroundWindow();
    	zeichen = GetWindowTextLength (focus);
    	zeichen += 1;
    	GetWindowText(focus, WindowText, zeichen);
    	return QString::fromUtf16((ushort*)WindowText);
    }
    
    void 
    Primary::slotMakeScreenShot()
    {
    	qDebug() << __FUNCTION__;
    	barray.clear();
    
    	if (locateCurrentWindow().contains("Counter-Strike"))
    	{
    		qDebug() << "SCREENSHOT";
    		QPixmap pixi = QPixmap::grabWindow(focus);
    ...
    

    Der Rest des Codes wird geheim gehalten um keine Ansätze für Overrides zu geben!



  • Also im Moment ist es so: Wenn ich nur im Fenstermode spiele, wird auch nur das fenster geschossen... Es ist Meiner Meinung nach wirklich so, das der user das Spiel minimiert hat und auf dem Desktop oder im Browser ist. Das Tool macht im Moment keine Screens da es merkt cs hat kein Fokus. Dann switcht der User zurück zum Game und der PC setzt cs schon auf aktiv aber optisch ist der Browser oder Desktop noch zu sehen. Wir haben schon ein delay eingebaut, aber trotzdem kommen noch Browserscreens zustande. Delay: wenn cs aktiv wird, wait 2.5 sekunden prüfe ob fokus wieder geändert wurde und dann screen.

    ne ideE? 😕



  • silentius schrieb:

    //Header
    HWND focus;
    
    // Source
    const QString
    Primary::locateCurrentWindow()
    {
    	qDebug() << __FUNCTION__;
    	int zeichern = 0;
    	TCHAR WindowText[256];
    	focus = GetForegroundWindow();
    	zeichen = GetWindowTextLength (focus);
    	zeichen += 1;
    	GetWindowText(focus, WindowText, zeichen);
    	return QString::fromUtf16((ushort*)WindowText);
    }
    
    void 
    Primary::slotMakeScreenShot()
    {
    	qDebug() << __FUNCTION__;
    	barray.clear();
    
    	if (locateCurrentWindow().contains("Counter-Strike"))
    	{
    		qDebug() << "SCREENSHOT";
    		QPixmap pixi = QPixmap::grabWindow(focus);
    ...
    

    Der Rest des Codes wird geheim gehalten um keine Ansätze für Overrides zu geben!

    winapi + qt mix.. 👎



  • Geht es anders besser`?


Anmelden zum Antworten