komisches Fenster DIEMWIN mit Setwindowpos

Für allgemeine Fragen zur Programmierung mit PureBasic.
3dhubiflieger
Beiträge: 123
Registriert: 27.10.2013 12:13

komisches Fenster DIEMWIN mit Setwindowpos

Beitrag von 3dhubiflieger »

Hallo, ich will mein Programm andauernd im Vordergrund halten. Ich habe jetzt das Problem, das zwar das im Vordergrund zu haltende Programm beim ersten Start mit unten aufgeführten Code auch in den Vordergrund kommt. Beende ich aber dieses im Vordergrund zu haltende Programm und führe den Code in Purebasic neu aus, so kommt nen komisches Fenster namens DIEMWIN und das Programm kommt nicht mehr nach vorn. Beim nächsten Aufruf, geht es dann wieder ?? Ich denke es ist irgendwo ein Fehler bei der Umwandlung ins handle...finde ihn aber nicht....weiss jemand Rat ? :)


Code: Alles auswählen

;Hier hol ich die ID her.....
Procedure ProcessID(Name.s) 
   ;Nach aktivem Process suchen
  Protected result.l, Snapshot.l, ProcessFound.l, PN$, Process.PROCESSENTRY32
  result = #False
  Process\dwSize = SizeOf(PROCESSENTRY32)
  Snapshot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
  If Snapshot
    ProcessFound = Process32First_(Snapshot, Process)
    While ProcessFound
      PN$ = UCase(PeekS(@Process\szExeFile, #PB_Any, #PB_Ascii))
      If UCase(Name) = GetFilePart(PN$) : result = #True : Break : EndIf
      ProcessFound = Process32Next_(Snapshot, Process)
    Wend
    CloseHandle_(Snapshot)
  EndIf
  
  

  If Result = #True 
    ProcedureReturn Process\th32ProcessID
  EndIf 
EndProcedure  


;Hier noch ne geklaute Procedure fürs Handle die eigentlich gehn sollte ??...
Procedure.l ProcID2hWnd(ProcID.l)
 
  Protected hwnd.l
  Protected ProcTaskID.l
 
  hwnd = FindWindow_(#Null, #Null)
 
  While hwnd <> 0    
    GetWindowThreadProcessId_(hwnd, @ProcTaskID)
   
    If ProcTaskID = ProcID
      ProcedureReturn hwnd
    EndIf
   
    hwnd.l = GetWindow_(hwnd, #GW_HWNDNEXT)
   
  Wend
 
EndProcedure
  


;Vielleicht liegt es am Programm ?? mit Notepad geht es ??
    id.l = processid("ZSNESW.EXE") ;Der Supernintendo Emulator ZSNESW.EXE soll im Vordergrund bleiben
    hwnd.l = procid2hwnd(id.l)
    
    
    ;wenn man diese Api und das zu startende Programm extern(also über Windows) schliesst und nochmal ausführt.....geht es ?????
 SetWindowPos_(hwnd, #HWND_TOPMOST, 0, 0, 100, 100, #SWP_NOACTIVATE | #SWP_SHOWWINDOW | #SWP_NOMOVE | #SWP_NOSIZE)
__________________________________________________
Code-Tags hinzugefügt
06.11.2013
RSBasic