Firefox - INet-bei-schließen / Thunderbird-Iconizer

Anwendungen, Tools, Userlibs und anderes nützliches.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Firefox - INet-bei-schließen / Thunderbird-Iconizer

Beitrag von GPI »

erstmal ein kleines Tool, das Firefox startet und auf dessen ende wartet. Anschließen wird gefragt, ob die Internetverbindung beendet werden soll.
Gleichzeitig wird auch Thunderbird beenden und mein ThunderbirdIconizer
Das klappt ganz gut, nur wenn man Erweiterungen installiert scheint das programm beim nächsten start sich kurz zu beenden und sofort zu starten.
Das programm muß in ordner der "FireFox.exe" liegen!
Das programm ist für den 1&1-Profidialer ausgerichtet, für alle anderen muß eine modifikation durchführen:

Code: Alles auswählen

RunProgram("FireFox.exe","","", 1)
a=FindWindow_(0,"1&1 Profi-Dialer")
If a
  If MessageRequester("Internet-Verbindung", "Soll die Internetverbindung getrennt werden?", #MB_YESNO|#MB_ICONQUESTION|#MB_SYSTEMMODAL)=#IdYes
    SendMessage_(a,#WM_CLOSE,0,0)
    b=0
    Repeat
      a=FindWindowEx_(0,b,"MozillaWindowClass",0)
      a$=Space(2046)
      GetWindowText_(a,@a$,Len(a$))
      If a
        If FindString(a$,"Thunderbird",0)=0
          b=a
        Else
          SendMessage_(a,#WM_CLOSE,0,0)
          b=0
          Delay(100)
        EndIf
      Else
        Break
      EndIf
    ForEver
    a=FindWindow_(0,"ThunderBirdStarter")
    If a
      PostMessage_(a,#WM_CLOSE,0,0)
      SendMessage_(a,#WM_CLOSE,0,0)
    EndIf
  EndIf
  
EndIf
für alle anderen Internetverbindungen:
statt

Code: Alles auswählen

a=FindWindow_(0,"1&1 Profi-Dialer")
If a
  If MessageRequester("Internet-Verbindung", "Soll die Internetverbindung getrennt werden?", #MB_YESNO|#MB_ICONQUESTION|#MB_SYSTEMMODAL)=#IdYes
    SendMessage_(a,#WM_CLOSE,0,0)
das

Code: Alles auswählen

if InternetGetConnectedState_(0, 0)
  If MessageRequester("Internet-Verbindung", "Soll die Internetverbindung getrennt werden?", #MB_YESNO|#MB_ICONQUESTION|#MB_SYSTEMMODAL)=#IdYes
    RunProgram("rasdial","rasdial /disconnect","")
;----------------------------------------

Zweites Program: Sobald das Programm gestartet wird, wird ein aktives Thunderbird-Fenster gesucht und versteckt.
Als ersatz kann man ein Icon in Systemtry aktiviert. Beim draufklicken mit links wird die sichtbarkeit des Thunderbirds getoggelt, bzw. wenn kein Thunderbird an ist, thunderbird gestartet. Mit rechtsklick bekommt man ein Menü.
Das Programm sollte in Ornder von Thunderbird gespeichert werden und man muß *ZWINGEND* ein Icon in Compiler angeben.

Code: Alles auswählen

Global quit,ManualThunderbirdStart
quit=#False

Procedure FindThunderbird()
  Result=#False
  b=0
  Repeat
    a=FindWindowEx_(0,b,"MozillaWindowClass",0)
    a$=Space(2046)
    GetWindowText_(a,@a$,Len(a$))
    If a
      b=a
      If FindString(a$,"Thunderbird",0)
        Result=a
        Break
      EndIf
    Else
      Break
    EndIf
  ForEver
  ProcedureReturn Result
EndProcedure
Procedure IsThunderbirdVisible()
  Result=#False
  a=FindThunderbird()
  If a
    Result=IsWindowVisible_(a)
  EndIf
  ProcedureReturn Result
EndProcedure
Procedure ShowAllThunderbird(Type)
  Result=#False
  b=0
  Repeat
    a=FindWindowEx_(0,b,"MozillaWindowClass",0)
    a$=Space(2046)
    GetWindowText_(a,@a$,Len(a$))
    If a
      b=a
      If FindString(a$,"Thunderbird",0)
        If Type
          ShowWindow_(a,#SW_Show)
          ;ShowWindow_(a,#SW_RESTORE)
          SetForegroundWindow_(a)
        Else
          If IsIconic_(a)
            ShowWindow_(a,#SW_RESTORE)
          EndIf
          ShowWindow_(a,#SW_HIDE)
        EndIf
        Result=#True
      EndIf
    Else
      Break
    EndIf
  ForEver
  ProcedureReturn Result
EndProcedure
Procedure ToggleThunderbird()
  If IsThunderbirdVisible()
    Result=ShowAllThunderbird(#False)
  Else
    Result=ShowAllThunderbird(#True)
  EndIf
  If Result=#False
    RunProgram("thunderbird.exe"):ManualThunderbirdStart=#True
  EndIf
  ProcedureReturn Result
EndProcedure
Procedure WriteEmail()
  Handle=FindThunderbird()
  If Handle
    thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0) 
    thread2=GetWindowThreadProcessID_(Handle,0) 
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf 
    SetForegroundWindow_(Handle)
    Delay(125)
    keybd_event_(#vk_control,0,0,0)
    vk=VkKeyScanEx_('n',GetKeyboardLayout_(0))
    keybd_event_(vk,0,0,0)
    keybd_event_(vk,0,#KEYEVENTF_KEYUP,0)
    keybd_event_(#vk_control,0,#KEYEVENTF_KEYUP,0)
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
    ;
  EndIf
  
EndProcedure
Procedure CheckEmail()
  Handle=FindThunderbird()
  If Handle
    thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0) 
    thread2=GetWindowThreadProcessID_(Handle,0) 
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf 
    SetForegroundWindow_(Handle)
    Delay(125)
    keybd_event_(#vk_control,0,0,0)
    keybd_event_(#vk_shift,0,0,0)
    vk=VkKeyScanEx_('t',GetKeyboardLayout_(0))
    keybd_event_(vk,0,0,0)
    keybd_event_(vk,0,#KEYEVENTF_KEYUP,0)
    keybd_event_(#vk_shift,0,#KEYEVENTF_KEYUP,0)
    keybd_event_(#vk_control,0,#KEYEVENTF_KEYUP,0)
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
    ;
  EndIf
  
EndProcedure
Procedure DoEvent(event)
  Select event
    Case #PB_Event_Menu
      Select EventMenuID()
        Case 0:ToggleThunderbird() 
        Case 1:quit=#True
        Case 2:WriteEmail()
        Case 3:CheckEmail()
      EndSelect
    Case #PB_Event_SysTray
      Select EventType()
        Case #PB_EventType_LeftClick:ToggleThunderbird()
        Case #PB_EventType_RightClick:DisplayPopupMenu(0,WindowID())
      EndSelect
    Case #PB_Event_CloseWindow:quit=#True
    Case #WM_QUIT:quit=#True
  EndSelect
EndProcedure

If FindWindow_(0,"ThunderBirdStarter")
  End
EndIf
 
If OpenWindow(0,0,0,100,100,#PB_Window_Invisible,"ThunderBirdStarter")
  IconId=LoadIcon_(GetModuleHandle_(0),1)
  AddSysTrayIcon(0,WindowID(),IconId)
  
  CreatePopupMenu(0)
  MenuItem(0,"Zeige/Verstecke Thunderbird")
  MenuBar()
  MenuItem(2,"E-Mail schreiben")
  MenuItem(3,"E-Mails abrufen")
  MenuBar()
  MenuItem(1,"SysIcon schließen")
  
  Repeat
    Delay(100)
    If FindThunderbird() And IsThunderbirdVisible() 
      If ShowAllThunderbird(#False)
        Break
      EndIf
    EndIf
    DoEvent(WindowEvent())
  Until quit Or ManualThunderbirdStart
  
  Repeat
    DoEvent(WaitWindowEvent())
  Until quit
  
  ShowAllThunderbird(#True)
EndIf

CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!