Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

Получение списка выделенных файлов   Найти похожие ветки 

 
Долька   (2005-05-04 07:18) [0]

Уважаемые мастера, подскажите пожалуйста, как можно получить список выделенных фалов в windows explorer в обычной TMemo?


 
Долька   (2005-05-04 14:49) [1]

ЭЭЭ... Не за что


 
Marser ©   (2005-05-04 15:48) [2]

С помощью findwindow и findwindowex находим окошко класса SysListView32, с которым и работаем:
LVM_GETSELECTEDCOUNT
LVM_GETSELECTIONMARK
LVM_GETITEMTEXT
LVM_GETITEMSTATE
И т.д... Подробности в хелпе.


 
easy ©   (2005-05-04 16:34) [3]

function PrintEnumProc(Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
const
 MaxTextSize = 1024;
var
 PrText: array[0..MaxTextSize] of char;
 i, count,state: integer;
 vBuffer: array[0..255] of Char;
 vProcessId: DWORD;
 vProcess: THandle;
 vPointer: Pointer;
 vNumberOfBytesRead: Cardinal;
 vItem: TLVItem;
begin
 Result := True;
 windows.GetClassName(Wnd, PrText, MaxTextSize);
 if PrText = "SysListView32" then begin
   count := SendMessage(Wnd, LVM_GETITEMCOUNT, 0, 0);
   GetWindowThreadProcessId(Wnd, @vProcessId);
   vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, vProcessId);
   vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
   try
     for I := 0 to count - 1 do begin
       state:=SendMessage(Wnd, LVM_GETITEMSTATE, I, LVIS_SELECTED);
       if state=LVIS_SELECTED then begin
       with vItem do begin
         mask := LVIF_TEXT;
         iItem := I;
         iSubItem := 0;
         cchTextMax := SizeOf(vBuffer);
         pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
       end;
       WriteProcessMemory(vProcess, vPointer, @vItem, SizeOf(TLVItem), vNumberOfBytesRead);
       SendMessage(Wnd, LVM_GETITEM, I, integer(vPointer));
       ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
           @vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
       TMemo(Pointer(LParam)^).Lines.Add(vBuffer);
       end;
     end;
   finally
     VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
     CloseHandle(vProcess)
   end;
   Result := false;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 W: HWND;
begin
 Memo1.Clear;
 W := FindWindow("ExploreWClass", nil);
 if W = 0 then
   raise Exception.Create("Explorer window not found");
 EnumChildWindows(W, @PrintEnumProc, LPARAM(@memo1));
end;


 
PixNoFix   (2005-06-13 09:31) [4]

Кто использует этот код на забудте добавить вот эту библиотеку.. я 2 дня глумился :) пока не нашёл что за TLVItem такой
CommCtrl

Вопрос такой!
Как можно заменить ExplorerWClass - Проводник, на Обычный Экплорер... который вызывается, когда тыкаешь на "Мой компьютер, диск c:\, ну и т.д."



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
14-1121690700
Koala
2005-07-18 16:45
2005.08.14
Ющенко намерен ликвидировать ГАИ


4-1118505430
Adham
2005-06-11 19:57
2005.08.14
Font in Caption of the Forms


4-1118575139
Naphy
2005-06-12 15:18
2005.08.14
Параметр функции GetEnvironmentVariable...


3-1120757940
igorek520
2005-07-07 21:39
2005.08.14
Проблема с переводом БД


1-1122532937
Reals
2005-07-28 10:42
2005.08.14
Удаление из файла информации определенного размера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский