Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
ВнизСохранение координат иконок на декстопе. Взгляните. Найти похожие ветки
← →
neodiX (2002-11-07 15:36) [0]Всем привет!
Дело в том, что я знаю как это сделать, но я сделал по Рихтер"скому методу. Там используется метод внедрения в процесс Explorer"a, Длл и т.д. Но вот нашел в инете более простой способ, но он не пашет :( Вроде принцип тот же: во время посылки мессаги LV_GETITEMPOSITION в параметре Lparam передается указатель на структуру TLVITEM, ясно что указатель надо сделать глобальным, т.е. сделать проекцию файла. Ниже приведен код, в котором я не могу найти ошибку и потому не могу понять почему он не пашет. Может кто поможет разобраться? Все же хочется использовать более легкий варинат.
program nevermind;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,commctrl,registry,
ipcthrd;
const g="{270D73EA-C981-4D4B-93E5-1D1E6D28483E}";
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
PInfo = ^TInfo;
TInfo = packed record
infoPoint: TPoint;
infoText: array[0..255] of Char;
infoItem: TLVItem;
infoFindInfo: TLVFindInfo;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Info: PInfo;
Wnd: HWnd;
Count, I: Integer;
SharedMem: TSharedMem;
f:textfile;
maphandle:thandle;
begin
try
assignfile(f,"haja.txt");
rewrite(f);
Wnd := GetWindow(GetWindow(FindWindow("ProgMan",nil),GW_CHILD),GW_CHILD);
Count := ListView_GetItemCount(Wnd);
MapHandle:=CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE,
0, SizeOf(TInfo), g);
info:=MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TInfo));
Info^.infoItem.pszText := Info^.infoText;
Info^.infoItem.cchTextMax := 255;
Info^.infoItem.mask := LVIF_TEXT;
for i := 0 to Count - 1 do begin
Info^.infoItem.iItem := i;
ListView_GetItem(Wnd, Info^.infoItem);
ListView_GetItemPosition(Wnd, I, Info^.infoPoint);
writeln(f,Format("%.4d, %.4d",[Info^.infoPoint.X, Info^.infoPoint.Y]));
end;
finally
UnMapViewOfFile(info);
CloseHandle(MapHandle);
closefile(f);
end;
end;
end.
Заранее всем спасибо.
← →
neodiX (2002-11-08 11:48) [1]А может, вообще, кто нибуть знает вариант без длл файла?
← →
Cobalt (2002-11-09 12:58) [2]В том-то и проблема, что проекция файла делается только на твоё Адр. Пр-во. Без внедрения не обойтись...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c