Datei-Selektion ohne Extension im WindowsXP-Explorer

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Datei-Selektion ohne Extension im WindowsXP-Explorer

Beitrag von Rudi »

Folgender Code selektiert nur das Präfix einer Datei wenn diese zum Umbenennen im Windows-Explorer angeklickt worden ist.

Es fehlt noch die Ausklammerung von Ordnern. Ordner werden aber nur berücksichtigt wenn sie sich im zweigeteilten Fenster auf der rechten Seite befinden und mindestens einen Punkt enthalten.

Beendet wird das Tool per Linksklick auf das rote Systrayicon.

Wer noch unter XP arbeitet kann den Code vielleicht gebrauchen denn ab Vista soll sowas ja nativ enthalten sein.

Code: Alles auswählen

EnableExplicit
Global hWnd.l, Titel$, p.w, s.w, x.b

If OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible)
  AddSysTrayIcon(0, WindowID(0), LoadIcon_(0, #IDI_ERROR))
EndIf

Repeat
  Delay(100)
  
  hWnd = FindWindow_("ExploreWClass", 0)
  If hWnd
    hWnd = FindWindowEx_(hWnd, 0, "SHELLDLL_DefView", 0)
    If hWnd
      hWnd = FindWindowEx_(hWnd, 0, "SysListView32", "FolderView")
      If hWnd
        hWnd = FindWindowEx_(hWnd, 0, "Edit", 0)
        If Not hWnd
          hWnd = FindWindow_("CabinetWClass", 0)
          If hWnd
            hWnd = FindWindowEx_(hWnd, 0, "SHELLDLL_DefView", 0)
            If hWnd
              hWnd = FindWindowEx_(hWnd, 0, "SysListView32", "FolderView")
              If hWnd
                hWnd = FindWindowEx_(hWnd, 0, "Edit", 0)
              EndIf
            EndIf
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf
  
  If Not hWnd And x=1
    x=0
  EndIf
  
  If hWnd And x=0
    Titel$ = Space(1024)
    GetWindowText_(hWnd, @Titel$, 1024)
    p = Len(Titel$)
    s = Len(StringField(Titel$, CountString(Titel$, ".")+1, "."))+1
    SendMessage_(hWnd, #EM_SETSEL, 0, p-s)
    x=1
  EndIf

  Select WindowEvent()
    Case #PB_Event_SysTray
      Select EventGadget()
        Case 0
          Select EventType()
            Case #PB_EventType_LeftClick
              Break
          EndSelect
      EndSelect
  EndSelect
ForEver
End
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: Datei-Selektion ohne Extension im WindowsXP-Explorer

Beitrag von Rudi »

1. überarbeitete Auflage:

Code: Alles auswählen

EnableExplicit
Global hWnd.l, Length.l, Titel.s, p.w, s.w, x.b

If OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible)
  AddSysTrayIcon(0, WindowID(0), LoadIcon_(0, #IDI_ERROR))
  AddWindowTimer(0, 0, 100)
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Timer
      Select EventTimer()
        Case 0
          hWnd = GetForegroundWindow_()
          If hWnd = FindWindow_("ExploreWClass", 0) Or FindWindow_("CabinetWClass", 0)
            hWnd = FindWindowEx_(hWnd, 0, "SHELLDLL_DefView", 0)
            If hWnd
              hWnd = FindWindowEx_(hWnd, 0, "SysListView32", "FolderView")
              If hWnd
                hWnd = FindWindowEx_(hWnd, 0, "Edit", 0)
                If hWnd And x=0
                  Length = GetWindowTextLength_(hWnd)
                  Titel = Space(Length)
                  GetWindowText_(hWnd, @Titel, @Length)
                  p = Len(Titel)
                  s = Len(StringField(Titel, CountString(Titel, ".")+1, "."))+1
                  If p-s > -1
                    SendMessage_(hWnd, #EM_SETSEL, 0, p-s)
                  EndIf
                  x=1
                ElseIf Not hWnd And x=1
                  x=0
                EndIf
              EndIf
            EndIf
          EndIf
      EndSelect
    Case #PB_Event_SysTray
      Select EventGadget()
        Case 0
          Select EventType()
            Case #PB_EventType_LeftClick
              Break
          EndSelect
      EndSelect
  EndSelect
ForEver
End
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Antworten