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

Вниз

рабочий стол x64 винды под x32 программой   Найти похожие ветки 

 
brother ©   (2015-03-23 18:02) [0]

Всем доброго времени суток. Есть код получения надписи иконок рабочего стола:
...
Res := WriteProcessMemory(ProcessHandle, RemoteProcData, @Data, SizeOf(Data), PLongWord(nil)^); If not Res Then RaiseLastOSError;
SEndMessage(LV, LVM_GETITEMTEXT, I, LPARAM(@RemoteProcData^.Item));
...
понятно, что для x64 это работать не будет.
Можно ли как то извратиться и получить LVM_GETITEMTEXT под x32 приложением? может вынести это все в x64 библиотеку и подгрузить ее из x32 приложения?


 
brother ©   (2015-03-23 18:03) [1]

зы подобная проблемма: http://www.programmersforum.ru/showthread.php?t=77925


 
Кто б сомневался ©   (2015-03-23 18:37) [2]

Слушай, а может проще сделать?
Зайти в папку Desktop да забрать имена прямо с ярлыков через OLE?

fLink: IShellLink;

function TShortcutWork.LoadLink(const ALinkPath: string): boolean;
var
 vBuf: array [0..300] of char;
begin
 Assert(ALinkPath <> "");
 ResetFields;
 Result := true;
 try
   OleCheck( (fLink as IPersistFile).Load(Pchar(ALinkPath), STGM_READ) );

   TargetPath := GetRealPath(ALinkPath);
   OleCheck( fLink.GetArguments(@vBuf[0], Length(vBuf)) );
   if vBuf[0] <> #0 then  // much faster if empty
     Arguments := vBuf;
   OleCheck( fLink.GetWorkingDirectory(@vBuf[0], Length(vBuf)) );
   if vBuf[0] <> #0 then
     WorkPath := vBuf;
 except
   Result := false;
 end;
end;



 
brother ©   (2015-03-23 18:40) [3]

приношу извинения не скопировал все, что показывает проблемму:
SEndMessage(LV, LVM_GETITEMTEXT, I, LPARAM(@RemoteProcData^.Item));
SEndMessage(LV, LVM_GETITEMRECT, I, LPARAM(@RemoteProcData^.ItemRect));
те получаю связку: имя-расположение на рабочем столе...


 
Кто б сомневался ©   (2015-03-23 18:40) [4]

Точнее это даже не имена, а внутренности ярлыков. Имена ярлыков - это имена ярлыков :)


 
brother ©   (2015-03-23 18:41) [5]

ну кэпшн...


 
brother ©   (2015-03-23 18:44) [6]

те делаю виртуальный рабочий стол, надо получить расположения, иконки и кэпшены объектов рабочего стола


 
brother ©   (2015-03-23 18:47) [7]

эх, знать бы структуру ItemPos:
 reg.OpenKey("Software\Microsoft\Windows\Shell\Bags\1\Desktop", false);
 if reg.GetDataInfo("ItemPos1920x1080x96(1)", Info) then
 begin
   SetLength(Buffer, Info.DataSize);
   Reg.ReadBinaryData("ItemPos1920x1080x96(1)", Buffer[0], Info.DataSize);
 end;
былоб идеально...


 
Кто б сомневался ©   (2015-03-23 18:51) [8]

Я б сделал x64 exe с командной строкой - он еще пригодится в этом деле.
И оттуда бы перебрасывал к себе через WM_COPYDATA и не парился бы.


 
brother ©   (2015-03-23 18:53) [9]

вот видимо так и буду делать...


 
Кто б сомневался ©   (2015-03-23 19:11) [10]


> И оттуда бы перебрасывал к себе через WM_COPYDATA и не парился
> бы.


Даже лучше через пайп - прям с консоли прочитать:
http://www.sql.ru/forum/887984/zapustit-s-delphi-konsolnoe-prilozhenie-i-schitat-ego-vyvod


 
Кто б сомневался ©   (2015-03-24 20:07) [11]


> brother ©   (23.03.15 18:47) [7]
>
> эх, знать бы структуру ItemPos:


Не, структуру при желании можно разобрать, тем более она небольшая, это не проблема.
Просто она может легко поменяться в Win10 например.


 
brother ©   (2015-03-25 04:15) [12]

[11] я честно пытался, как то там все "мутно"...


 
Кто б сомневался ©   (2015-03-26 18:52) [13]


> brother ©   (25.03.15 04:15) [12]
>
> [11] я честно пытался, как то там все "мутно"...


Поискал бы хоть.

http://www.williballenthin.com/forensics/shellbags/


 
brother ©   (2015-03-26 19:59) [14]

афигеть! Честно искал, не нашел! Может заюзаю... большое спасибо!


 
KSergey ©   (2015-03-27 09:58) [15]

О! неужели я наконец-то узнал как и где хранится это долбанное расположение иконок рабочего стола?!
Вот спасибо! Меня 20 лет мучил этот вопрос


 
Кто б сомневался ©   (2015-03-27 14:40) [16]


> Меня 20 лет мучил этот вопрос


Да ладно, тогда еще рабочий стол был деревянный.



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

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

Наверх





Память: 0.48 MB
Время: 0.003 c
15-1428701404
Юрий
2015-04-11 00:30
2015.11.29
С днем рождения ! 11 апреля 2015 суббота


15-1427905090
Rouse_
2015-04-01 19:18
2015.11.29
Ну что, делимся, как кого развели на 1 апреля


11-1259870840
Dy1
2009-12-03 23:07
2015.11.29
SubMenu


15-1427439353
KSergey
2015-03-27 09:55
2015.11.29
Неожиданный синтаксис Си


15-1427751002
Юрий
2015-03-31 00:30
2015.11.29
С днем рождения ! 31 марта 2015 вторник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский