Вверх ↑
Этот топик читают: Гость
Ответов: 8930
Рейтинг: 823
#16: 2015-01-06 20:38:14 ЛС | профиль | цитата
Lora, всё-таки много умных мужиков вокруг -- большая сила!
карма: 19

0
Ответов: 2059
Рейтинг: 132
#17: 2015-01-06 20:54:51 ЛС | профиль | цитата
отлично работает на XP...

Попробовал на XP - Да.
На Windows-7, - nicht arbeiten.
карма: 6

0
Ответов: 1343
Рейтинг: 31
#18: 2015-01-06 21:25:28 ЛС | профиль | цитата
flint2 писал(а):
На Windows-7


говорили же В РАЗНЫХ ВЕРСИЯХ WINDOWS РАЗНЫЕ ПРОВОДНИКИ... может они по классу отличаются мм?
------------ Дoбавленo в 21.25:
я так полагаю надо заменить значения в этих строках?

Win := FindWindow('Progman', 'Program Manager');
Win := FindWindowEx(Win, 0, 'SHELLDLL_DefView', 0);
Win := FindWindowEx(Win, 0, 'SysListView32', 'FolderView');
карма: 2

0
Ответов: 196
Рейтинг: 43
#19: 2015-01-06 21:33:21 ЛС | профиль | цитата
flint2, если win7-64, тогда и не будет работать. Там структура LV_ITEM отличается.
карма: 2

0
Ответов: 8930
Рейтинг: 823
#20: 2015-01-06 21:39:07 ЛС | профиль | цитата
halt,
win7-64.jpg
карма: 19

0
файлы: 1win7-64.jpg [24.1KB] [345]
Ответов: 758
Рейтинг: 112
#21: 2015-01-06 21:54:31 ЛС | профиль | цитата
Немного подшаманил, на ХР будет выдавать имена файлов и папок во всех окнах Explorer
code_34850.txt

карма: 1

0
файлы: 1code_34850.txt [4.1KB] [266]
Ответов: 177
Рейтинг: 24
#22: 2015-01-06 22:05:36 ЛС | профиль | цитата
Леонид писал(а):
Lora, всё-таки много умных мужиков вокруг -- большая сила!


Вот за это мы вас и любим!
Умными людьми давно замечено; если собирается кучка мужиков, то получается либо пьянка, либо изобретение! Когда собирается кучка девушек, то получается либо скандал, либо салатик!!!

miver писал(а):
Немного подшаманил, на ХР будет выдавать имена файлов и папок во всех окнах Explorer
code_34850.txt


А у меня не запускается! В отладке пишет ошибку:
C:\Program Files (x86)\HiAsm_AltBuild\Elements\delphi\code\hiInlineCode_488D1E0.pas(109) Error: ';' expected but '.' found

C:\Program Files (x86)\HiAsm_AltBuild\Elements\delphi\code\hiInlineCode_488D1E0.pas(111) Error: Declaration expected but end of file found

У меня кстати, win.7-64 будет работать? У Лионида оно работает, но как он этого достиг он не поясняет! Может ему взятку дать?! У меня тут пирожки есть!!!
карма: 1

4
Голосовали:foksov, andrestudio, ser_davkin, sla8a
Ответов: 758
Рейтинг: 112
#23: 2015-01-06 22:09:25 ЛС | профиль | цитата
Lora, Скопируй еще раз, в InlineCode нет 109 строки вообще
карма: 1

0
Ответов: 2059
Рейтинг: 132
#24: 2015-01-06 22:22:05 ЛС | профиль | цитата
Леонид,
Эту картинку как раз я и описывал.
Rysik,halt и всем спасибо! Разобрался.
[flood]После недели праздников, очень больно думать.
Даже знакомые буковки на клаве всё реже попадаются.
А впереди ещё неделя.[/flood]
карма: 6

1
Голосовали:andrestudio
Ответов: 758
Рейтинг: 112
#25: 2015-01-06 22:22:21 ЛС | профиль | цитата
Леонид, Можешь сделать скриншот после шаманства
карма: 1

0
Ответов: 177
Рейтинг: 24
#26: 2015-01-06 22:57:19 ЛС | профиль | цитата
miver писал(а):
Lora, Скопируй еще раз, в InlineCode нет 109 строки вообще



Не получается! Все тоже самое выходит!!!


[URL][/URL]
карма: 1

0
Ответов: 758
Рейтинг: 112
#27: 2015-01-06 23:09:36 ЛС | профиль | цитата
Открой InlineCode должно быть вот так

#pas
unit HiAsmUnit;

interface

uses Windows, Messages, Kol, Share, Debug;

type
THiAsmClass = class(TDebug)
private

public
H:THI_Event;
onGetLastActivePopup:THI_Event;
procedure doGetLastActivePopup(var _Data:TData; Index:word);
end;

implementation

type
LV_ITEM = record
mask: UINT;
iItem: Integer;
iSubItem: Integer;
state: UINT;
stateMask: UINT;
pszText: PWideChar;
cchTextMax: Integer;
iImage: Integer;
lParam: LPARAM;
iIndent: Integer;

iGroupId: Integer;
cColumns: Integer;{ tile view columns }
puColumns: PUINT;

//piColFmt: PInteger;
//iGroup: Integer;{ readonly. only valid for owner data. }
end;

procedure THiAsmUnit.doGetLastActivePopup;
const
cchTextMax=255;
var
Win: THandle;
vItem, nTextLength: Integer;
LVItem: LV_ITEM;
pLVItem: ^LV_ITEM;
pszText: PChar;
svText: ShortString;

vProcessId: UInt;
vProcess: Integer;
vPointer: ^Integer;
dwWriten: DWORD;
begin
// Поиск рабочего стола
//Win := FindWindow('Progman', 'Program Manager');
//Win := FindWindowEx(Win, 0, 'SHELLDLL_DefView', 0);
//Win := FindWindowEx(Win, 0, 'SysListView32', 'FolderView');
Win := ReadInteger(_Data,H,0);

// Получаем процесс рабочего стола
GetWindowThreadProcessId(Win, @vProcessId);
vProcess := OpenProcess(PROCESS_ALL_ACCESS, false, vProcessId);

//vItemCount := SendMessage(Win, LVM_GETITEMCOUNT, 0, 0);

// Выделяем в нем память под текстовый буффер
pszText := VirtualAllocEx(vProcess, nil, cchTextMax, MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
// Выделяем в нем память под структуру LVITEM
pLVItem := VirtualAllocEx(vProcess, nil, SizeOf(LV_ITEM), MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
// Заполняем структуру
ZeroMemory(@LVItem, SizeOf(LV_ITEM));
LVItem.mask := LVIF_TEXT;
LVItem.pszText := @pszText;
LVItem.cchTextMax := cchTextMax;
LVItem.iSubItem := 0;

vItem := SendMessage(Win, LVM_GETHOTITEM, 0, 0);

// Пишем ее в память удаленного процесса
if not WriteProcessMemory(vProcess, pLVItem, @LVItem, SizeOf(LV_ITEM), dwWriten) then Exit;
nTextLength := SendMessage(Win, LVM_GETITEMTEXT, vItem, Integer(pLVItem));

// Читаем результат
ZeroMemory(@svText, cchTextMax);
ReadProcessMemory(vProcess, LVItem.pszText, @svText[1], nTextLength, dwWriten);

_hi_OnEvent(onGetLastActivePopup, PChar(@svText[1]));

VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
end;

end.

карма: 1

0
Ответов: 177
Рейтинг: 24
#28: 2015-01-06 23:22:50 ЛС | профиль | цитата
miver писал(а):
Открой InlineCode должно быть вот так




ctrl+с , ctrl+v рулит! Запустилась программка!!!
Вот только от ярлыков на рабочем столе по прежнему нет отклика! Не зависимо от того находится ли курсор над ярлыком программы или над пустым местом рабочего стола, пишет лишь одно и тоже: FolderView
карма: 1

0
Ответов: 8930
Рейтинг: 823
#29: 2015-01-06 23:32:08 ЛС | профиль | цитата
miver, вот скриншот:
win7-64_d2.jpg
Lora, когда внутри IC появляются кракозябры, надо перед копированием ПКМ->Кодировка-->UTF-8
карма: 19

0
файлы: 1win7-64_d2.jpg [29.1KB] [351]
Ответов: 758
Рейтинг: 112
#30: 2015-01-06 23:38:08 ЛС | профиль | цитата
Попробуй заменить
_hi_OnEvent(onGetLastActivePopup, PChar(@svText[1]));
на
_hi_OnEvent(onGetLastActivePopup, vItem);

и закоментировать
//if not WriteProcessMemory(vProcess, pLVItem, @LVItem, SizeOf(LV_ITEM), dwWriten) then Exit;

должен выводить порядковый номер. В общем, над разными иконками должен быть разный номер
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)