fremdes fenster fokussieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: fremdes fenster fokussieren

Beitrag von Moxl »

wow also der code von chi funktioniert :D :allright:

vielen dank :allright:
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

Re: fremdes fenster fokussieren

Beitrag von 3dhubiflieger »

Also...ich habe eine komplett andere Methode gefunden um ein Programm in den Vordergrund zu bringen ! Man simuliert einfach den Anwender, wenn dieser mit ALT TAB das Programm wechselt ! Dieser Code hier funktioniert mit echtem Vollbild und Vollbildfenster. Und ich denke auch auf jedem Windows Betriebssystem ! Mich würde interressieren was ihr davon haltet ! :bounce:

Code: Alles auswählen

#KEYEVENTF_SCANCODE    =  8
#KEYEVENTF_KEYUP       =  2
#MAPVK_VK_TO_VSC       =  0 



Procedure ProcessID(PName$)
 
  Protected Snapshot, Snapshot2, ProcessFound
  Protected Process.PROCESSENTRY32, Module.MODULEENTRY32
 
  Process\dwSize = SizeOf(PROCESSENTRY32)
  Module\dwSize  = SizeOf(MODULEENTRY32)
 
  Snapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
  If Snapshot
    ProcessFound = Process32First_(Snapshot, Process)
    While ProcessFound
    
      Snapshot2 = CreateToolhelp32Snapshot_(#TH32CS_SNAPMODULE,Process\th32ProcessID)
      If Snapshot2
        If Module32First_(Snapshot2, @Module)
          If UCase(PName$) = UCase(PeekS(@Module\szExePath[0]))
            CloseHandle_(Snapshot)
            CloseHandle_(Snapshot2)
            ProcedureReturn Process\th32ProcessID
          EndIf
     
          CloseHandle_(Snapshot2)
        EndIf  
      EndIf
     
      ProcessFound = Process32Next_(Snapshot, Process)
    Wend
   
    CloseHandle_(Snapshot)
  EndIf
 ProcedureReturn 0
EndProcedure


Procedure writekeyboardbuffer(Scancode,druecken)
;schreibt ein Zeichen in den Keyboardbuffer  
  
;extended oder nicht extended Key prüfen  
If MapVirtualKey_(Scancode,1) = 0 

 If druecken 
  keybd_event_(0,Scancode,#KEYEVENTF_SCANCODE | #KEYEVENTF_EXTENDEDKEY, 0) 
  Else
  keybd_event_(0,Scancode, #KEYEVENTF_KEYUP| #KEYEVENTF_SCANCODE | #KEYEVENTF_EXTENDEDKEY, 0)
 EndIf

Else   

 If druecken 
  keybd_event_(0,Scancode,#KEYEVENTF_SCANCODE , 0) 
  Else
  keybd_event_(0,Scancode, #KEYEVENTF_KEYUP| #KEYEVENTF_SCANCODE , 0)
 EndIf

EndIf
EndProcedure



Procedure setzeProgrammFocus(Pfad$)
  
  PID.l = Processid(Pfad$)
  
Repeat 

;Alt drücken
 writekeyboardbuffer(56,1)
  
 Auswahl = Auswahl + 1 
 
 ;Tab je nach Auswahl x mal drücken
 For x = 1 To Auswahl
   
 ;Tab drücken
  writekeyboardbuffer(15,1)
  ;Tab loslassen
  writekeyboardbuffer(15,0) 
  
 Next
 
  ;Alt loslassen
  writekeyboardbuffer(56,0)
 
  Delay(10) ;ein bisschen warten bis das Fenster angezeigt wird
 
  GetWindowThreadProcessId_(GetForegroundWindow_(), @PIDVorderfenster.l)

 Until PIDVorderfenster = PID.l Or Auswahl > 20

EndProcedure





setzeProgrammFocus("C:\programme\mozilla Firefox\firefox.exe")





Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: fremdes fenster fokussieren

Beitrag von Moxl »

eigentlich ganz gut :allright:
nur ich wollte halt nur das handle vom fenster angeben müssen und nich den ganzen pfad von dem programm <)

aber trotzdem gut :allright:
Antworten