Ordnerermittlung bei Klick



  • Hallo,
    ich hätte gern gewusst welche Mölichkeiten/Funktionen es unter Windows gibt, die mir den Pfad des gerade angeklickten Ordners ermittelt.

    Doppelklick auf irgend einen Ordner bsp: "Eigene Dateien" -> Ergebnis/Pfad soll an mein Programm gesendet werden -> Weiterverarbeitung in meinem Programm.

    Danke im Voraus.

    MfG Angelus2008



  • dafür gibts gar keine einfache möglichkeit.



  • Egal obs einfach ist oder nicht, du kennst ja meinen anderen Thread also weist du was ich vorhabe ^^. Somit brauch ich ein paar Lösungsmöglichkeiten was es mir erlaubt egal wo ich bin den Ordner/Standort meiner Position zu ermitteln, ob ich gerade auf den Ornder geklickt habe in dem ich mich befinde oder ob ich gerade in den Ordner mit der Maus reingeklickt habe. Somit Position des Mauszeigers ermitteln aber NICHT wenn ich in mein Programm reinklicke sondern in Windows (Desktop, Ordner, etc.) oder eben den Ordner ermitteln auf den ich geklickt habe. Demzufolge ist es mir egal ob es einfach ist oder nicht, hauptsache ich bekomme Lösungsvorschläge, den Rest mach ich alleine.

    Danke Angelus2008



  • Das ist wirklich nicht so einfach! Ich bin mir nicht sicher, aber du müsstest die nachrichten des Jeweiligen Programmes abfangen, Beispielsweise bei dem Explora, musst du die nachrichten des Exploras abfangen.



  • jo und wie geht das? Gibbet ne Tabelle welche Anwendung welche Nachrichten sendet?



  • Wenn du da nicht selbst drauf kommst, bezweifel ich, daß du die nötige Erfahrung und das nötige Wissen hast, sowas zu realisieren. Es gibt dafür keine einfache Lösung im Sinne einer Funktion oder was du dir sonst vorstellst.

    Eine Möglichkeit wäre vielleicht eine DLL in explorer.exe zu injizieren und die Fenster Prozedur vom "FolderView" zu subclassen und dann aus der gesubclassten Fenster Prozedur entsprechende Nachrichten an dein Programm zu senden. Das ist aber eine heikle Angelegenheit und ob und wie das in der Realität funktioniert, müsste man dann sehen. Wenn du damit jetzt nichts anfangen kannst, dann musst du dich erstmal mehr mehr mit den Grundlagen der Windoof Programmierung befassen.



  • Du bist voll lieb asdca 😉

    In deinem Main Programm machst du folgendes:

    HWND hookhWnd = ::FindWindow(TEXT("FolderView"), 0);
    ThreadID=GetWindowThreadProcessId(hookhWnd ,NULL);
    

    dann übergibst du die ThreadID der dll.

    Deine Dll sieht in etwa dann so aus:

    g_hMyHook = SetWindowsHookEx(WH_GETMESSAGE,hookCallBack, (HINSTANCE)g_DllHandle,g_ThreadId);
    

    Und die Callback Funktion in deiner Hook Dll darfst du nicht vergessen:

    LRESULT CALLBACK hookCallBack(int nCode, WPARAM wParam, LPARAM lParam)
    {
    	/*Hier musst die enthalten Informationen Kopieren und weiterleiten an dein Main Programm, aber vergiss nie die return CallNextHookEx aufzurufen*/
    
    	return CallNextHookEx(g_hMyHook, nCode, wParam, lParam); 
    }
    

    btw: Es ist kein verlass auf diesen Code...ist einfach so zusammen gebastelt..



  • Das ist doch schonma ein sehenswerter Anfang ich danke dir sehr mRXXo dafür ich werde mich mal damit beschäftigen.

    @asdca: soweit ich weis ist ein Forum dafür da um nach Hilfe zu fragen, und Hilfe anzubieten wenn man, so wie in meinem Fall nicht weiter kommt. Diese wie ich finde immer überflüssigen posts vonwegen geht nicht, nicht einfach, kannst du nicht, sonst würdest du net fragen, kann man sich doch eigentlich sparen oder? Will dich damit net angreifen aber wenn ich schon nach Lösungen gesucht habe un nicht drauf gekommen bin, ist dies oder war dies meine letze Möglichkeit warum ich mich hier überhaupt angemeldet habe.



  • ich hab dir nen ansatz vorgeschlagen, was willste noch?



  • Das was dein Nachfolger vorgeschlagen hat 😉



  • hook is für sowas ned nötig



  • @asdca

    Du hast eigentlich immer gute Vorschläge (ist ja dein forum 😉 )

    aber sie sind leider immer ein bisschen kurz gefasst oder kontraproduktiv...

    Zum Beispiel:

    hook is für sowas ned nötig

    Was ist den deiner Meinung nach besser?

    oder

    lol bit shift left -> grundlagen

    Er ist am lernen!

    oder

    halt die klappe. du kennst ned mal die grundlagen der c programmierung, müllst mein winapi forum zu und willst mich noch für deine unwissenheit verantwortlich machen? halt die klappe.

    Sehr nett von dir!

    Wenn du ein bisschen Präziser wärst.. wie mit einem Grundlegendem Beispiel oder einem Grund, wieso das nicht gut ist etc...dann hättest du eine gute Tat gemacht und die Arbeitszeit vergeht dann wie ihm flug!



  • Einfach das SysView Teil subclassen, wobei ich die ganze Sache immer noch für völligen Quatsch halte, was er da vorhat.

    Und ich finde einfach, daß Jemand der solch fundamentale Dinge nicht weiß, was bit shifts sind und nicht weiß, wie Integer und Datentypen generell intern dargestellt werden, nicht mit Winapi rumpfuschen sollte und schon gar nicht mit Hooks oder irgendwelchen fortgeschrittenen Techniken, das geht doch sowieso voll nach hinten los und er versteht den code überhaupt nicht, den er irgendwo copy und pastet. Die leute werden immer gleich aggro wenn man ihnen sowas sagt, aber ich sage es ihnen eigentlich nur, um sie vor enttäuschungen zu bewahren.



  • Ja, dann schreib doch das ^^ weil es kommt ziemlich Arrogant rüber. 😉

    Natürlich find ich es auch Quatsch, aber irgendwo irgendwie, muss er sich auch mal in die WinAPI reinüben und ein bisschen herumprobieren und spielen...

    Gibt ja so ein Sprichwort: "Probieren geht über studieren"


Anmelden zum Antworten