Seite 1 von 1

Datei-Selektion ohne Extension im WindowsXP-Explorer

Verfasst: 22.12.2010 20:44
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

Re: Datei-Selektion ohne Extension im WindowsXP-Explorer

Verfasst: 29.12.2010 16:03
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