سؤال

هل هناك طريقة لمعرفة الملفات التي يتم تحديدها في ويندوز اكسبلورر؟ لقد تم النظر في البرنامج التعليمي نشرت هنا توجه إلى ... لكن الإجراءات المذكورة هي:

وتحوم

والسياق

وخصائص القائمة

والسحب

والسحب والإسقاط

وأنا أتساءل عما إذا كان هناك طريقة التي تحصل الاحتجاج عند تحديد ملف. على سبيل المثال لإنشاء طريقة عرض صورة مصغرة للملف.

وشكرا.

هل كانت مفيدة؟

المحلول

وهنا هو كيف أفعل ذلك في أوتوهوتكي:

GetWindowsExplorerSelectedFile(_hWnd)
{
    local selectedFiles, file

    ; I can send ^C and parse Clipboard, but this way don't mess with clipboard at all, seems nicer.
    ; Warning: with this, you get only what is displayed in Explorer!
    ; If you kept the default Windows setting of not displaying file extensions (bad idea...),
    ; you will get partial file names...
    ControlGet, selectedFiles, List, Selected Col1, SysListView321, ahk_id %_hWnd%
    Loop, Parse, selectedFiles, `n  ; Rows are delimited by linefeeds (`n).
    {
        If (A_Index = 1)
        {
            file := A_LoopField
        }
        Else
        {
            ; Indicate that several files are selected, we return only the first one
            ; but count the total number of selected files, to indicate we return a partial result
            ErrorLevel := A_Index
        }
    }
    Return file
}

وأحصل على المسار من حقل التحرير من مستكشف (والذي هو عرضة للمشاكل! يمكن أن تكون غائبة أو يمكن إعداد عدم عرض المسار الكامل).

والفكرة الأساسية هي أن تطلب من السيطرة SysListView32 من مستكشف ما هي العناصر المحددة، والحصول عليها.

والآن، وهذا الإختراق، وهناك طرق ربما أنظف ...

وPS: كما وجدت هذا: الحصول على عناصر ListView في C # من SysListView32 باستخدام SendMessage
تحتاج الى بعض الفودو للحصول على عمل في عملية أخرى ...

ورمز ريال مدريد في <لأ href = "http://www.developpez.net/forums/d225760/general-developpement/programmation-windows/lire-items-syslistview32-process/#post1446286" يختلط = "نوفولو noreferrer" > موقع الفرنسية !

نصائح أخرى

وجئت عبر هذا البرنامج النصي الثعبان.

from win32com.client.gencache import EnsureDispatch 

for w in EnsureDispatch("Shell.Application").Windows(): 
    print w.LocationName + "=" + w.LocationURL 

ولكن أنا فقط الحصول على المجلد الذي مفتوح وليس العنصر المحدد حاليا في هذا المجلد.

وأي شخص لديه المزيد من المعلومات؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top