vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Re: CommonDialog subclassen 
Autor: christoph12
Datum: 21.07.05 20:41

Ja, eben, es kommen keine Ereignisse beim Umschalten auf Details und anschliessendem Sortieren nach Datum.
Sonst funktioniert's ja.

Mich wundert's, dass so eine Automation keiner will, ich habe schon vergeblich gesucht.

Gruss
Christoph

modifiziert:
' Die Hook-Fuktion empfängt alle Ereignisse des Dialogs
Public Function HookFunc(ByVal hdlg As Long, ByVal uiMsg As Long, _
  ByVal wParam As Long, ByVal lParam As Long) As Long
 
  Select Case uiMsg
    Case WM_INITDIALOG
      Debug.Print "Der Dialog wird Initialisiert"
 
    Case WM_HELP
      Debug.Print "Die Hilfe wurde aufgerufen"
      MsgBox "Es ist keine Hilfe verfügbar"
 
    Case WM_DESTROY
      Debug.Print "Der Dialog wird geschlossen"
    Case WM_NOTIFY
        Debug.Print "NOTIFY", wParam, lParam
    Case Else
        Debug.Print "SONST", uiMsg
  End Select
 
  ' Nicht vergessen! Im schlimmsten Fall reagiert der
  ' Dialog sonst nicht mehr
  HookFunc = uiMsg
End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

CommonDialog subclassen 
Autor: christoph12
Datum: 18.07.05 21:34

Hallo

wie kann ich den Common Dialog (OCX oder Api) so hinbiegen, dass er mit Anzeige der Details aufklappt und nach Datum sortiert (abwärts) ist?

Gruss
Christoph
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: ModeratorMartoeng (Moderator)
Datum: 19.07.05 11:37

Der CommonDialog bietet eine Variable für die Adresse einer Prozedur an. Die muss man setzen (Aufbau der Prozedur ist in der MSDN beschrieben). Evtl. auch noch ein Flag setzen, dass er die Nachrichten auch schickt.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: christoph12
Datum: 19.07.05 22:56

Wie heisst diese Variable und welches Flag ist es?
Ich habe schon mit SPY geloggt, finde aber nicht raus, wie das funktioniert...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: ModeratorMartoeng (Moderator)
Datum: 19.07.05 23:23

Ah, mit dem normalen CommonDialog-Control geht das nicht.
Du musst GetOpenFilename nutzen. Ist hier in der API-Referenz gelistet und gut beschrieben.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: christoph12
Datum: 20.07.05 23:03

Das ist mir schon klar. Der Aufruf betrifft 2 controls, die nichts mit dem filelistview-control zu tun haben: erstmal im Ansichtenmenü auf Details schalten und dann in der Überschrift in der Spalte Datum auf Sortieren klicken. Ich habe mal vor Unzeiten einen Codeschnipsel auf einer japanischen Seite gefunden, der sich diesem Problem widmete, aber die Umsetzung war einfach hässlich.
Bin kein MSDN-Profi.
Hintergrund ist eine zu langsame Verarbeitung eines Codes mit FSO in einem grösseren Firmennetzwerk.

Gruss
Christoph
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: ModeratorMartoeng (Moderator)
Datum: 20.07.05 23:16

http://www.vbarchiv.net/vbapi/GetOpenFileName.php
Da ist die Hook-Prozedur bereits beschrieben.
Darin kann man dann auch die Ereignisse abfangen und dann darauf reagieren.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: christoph12
Datum: 21.07.05 22:21

erste Lösung gefunden:

      Case WM_NOTIFY
 
            If bLvSetupDone = False Then
 
             'hwnd is the handle to the dialog
             'hwndParent is the handle to the common control
             'hwndLv is the handle to the listview itself
               hWndParent = GetParent(hwnd)
               hwndLv = FindWindowEx(hWndParent, 0, "SHELLDLL_DefView", _
                 vbNullChar)
 
               If hwndLv > 0 Then
                  Call SendMessage(hwndLv, WM_COMMAND, ByVal m_lvInitialView, _
                    ByVal 0&)
 
Wie soll man als Normalsterblicher auf das kommen?
Jetzt fehlt nur noch das Sortieren....
 
                 'since we found the lv hwnd, assume the
                 'command was received and set the flag
                 'to prevent recalling this routine
                  bLvSetupDone = True
               End If  'hwndLv
zitiert aus:
http://vbnet.mvps.org/index.html?code/hooks/fileopensavedlghookadvtext.htm
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: ModeratorMartoeng (Moderator)
Datum: 22.07.05 01:01

Das geht schon. Man muss halt nur die MSDN richtig durchforsten und dann vielleicht auch noch andere Quellen.
Du kannst auch mit einem Flag Benachrichtigungen schicken lassen, wenn der Benutzer einen Ordner wechselt und dann Dateien aussortieren, die Du nicht angezeigt haben möchtest.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: christoph12
Datum: 24.07.05 18:56

Hallo,
Das SysHeader32 control schickt keine Nachrichten an den Common Dialog, wenn
ich auf eine Sortier-Spalte klicke. Was soll ich wem sagen, dass er's tun soll und wie?
Gruss
Christoph
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CommonDialog subclassen 
Autor: ModeratorMartoeng (Moderator)
Datum: 24.07.05 21:17

Du könntest den SysHeader subclassen.
Dann erhälst Du alle Nachrichten.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel