Re: Polozka v menu

From: Spock (spock@bfs.cz)
Date: 30. 07. 2000, 22:26 CEST


>Jak v dll? Ja jsem myslel polozku v kontextovem menu na prave tlacitko
>mysi. Teda hlavne ten text v tom menu ze je moc dlouhy a to snad s tema
>dll nema co delat. Ty polozky v tom menu jsou pry v Registrech ale tuhle
>nemuzu najit. A kdyz by to teda bylo tim dll souborem tak jakym?

muze to mit hodne co delat s .dll... :) a jaksi jsi pozapomnel
napsat, o jaky prog a jaky text ti vlastne jde. treba by se dalo
konkretne poradit... ale kdyz string skutecne neni v registru,
bude situace asi slozitejsi a leckdy nad moznosti "normalniho"
usera. omlouvam se tedy za ponekud delsi mail, ale podobne
dotazy tady uz parkrat byly. a protoze nekdy je reseni oriskem
i pro stareho programatora, zkusim "strucne" vysvetlit, proc je
lepsi se do podobnych akci radeji nepoustet. je to tedy spise
ODSTRASUJICI rada !!! :)))

nektere softy pouzivaji dll knihovnu, ktera takove shell extensions
realizuje. budu tedy predpokladat, ze ta polozka v menu existuje
obecne vzdy, jinak musis misto * najit ext. pro ktere plati. musis
tedy najit v registru  HKCR\*\shellex\ContextMenuHandlers\  klic
toho softu, ktery ma tu polozku menu na svedomi a v nem bude
ASI stringova polozka (obvykle default) obsahujici clsid, tedy neco
jako "{0ab12.....}". to musis zkopirovat a nasledne si najit klic se
stejnou hodnotou pod HKCR\CLSID\. pod nim by pak mel byt klic
\InProcServer* a v nem polozka, ktera definuje prave prislusnou
dll knihovnu. to ale jeste zdaleka neni vsechno... :)

nasledne pak musis prislusnou knihovnu editovat hex-editorem
a pokusit se najit prislusny string. nekdy ho najdes vcelku, jindy
ne, nekdy bude v ascii, jindy v unicode, casto v obojim a casto
tam bude vicekrat. zmenit string pri zachovani jeho stavajici delky
neni problem. chces-li string ZKRATIT, musis ten zbytek doplnit
nulami (mezery by se ti zobrazily a zkraceni by bylo k nicemu).

taky je potrebne dat pozor na word tesne pred stringem, ktery
muze (ale nemusi :)) obsahovat delku stringu. (ale byva obvykle
v intel-formatu, tedy "naruby"). v takovem pripade nekdy MUSIS
zmenit jeho hodnotu tak, aby v nem byla nova delka zkraceneho
stringu (delka unicode je bez nul, tedy jenom ascii bytes). jindy
ji zase naopak menit NESMIS...
zvetsit delku stringu je obvykle ve vetsine pripadu temer nemozne.

frustrujici hledani pod clsid v registrech (shora uvedena moznost
totiz zdaleka neni jedina) si muzes obcas usetrit, pokud najdes
v adresari toho programu nejakou knihovnu, obsahujici potrebny
string. nekdy se jmenuje *ext.*, *shex*.*, *shell*.* nebo podobne.
ale pozor - takovych souboru muze byt vic a potom babo, rad! ;-)
krome toho, jak uz jsem rekl vyse, nemusi byt ten string vzdycky
vcelku a knihovna nemusi byt v adresari programu...

TAK. uz te presla chut menit nepristupne polozky? ;-)) pokud ne,
tak jeste doplnim, ze pokud jde o komercni soft, tak jsou obvykle
editace a zmeny ve strojaku programu oznacovany jako trestne.
a kdo neni ve strojaku jako ryba ve vode, potresta se obycejne
stouranim v kodu velice rychle sam - znici si program, pripadne
i nakopne os nebo i disk. nekdy staci blbej bajt na blbym miste
v blbym okamziku...

btw: pokud te ta polozka hodne stve, :) tak vetsina slusnych
softu miva moznost tyto shell extensions vypnout. pak nekdy
staci udelat si vlastni potrebnou polozku v menu pro potrebne
soubory klasickym uzivatelskym postupem z menu okna:
view / options... / filetypes.

bye. spock.



This archive was generated by hypermail 2.1.2 : 04. 09. 2001, 03:15 CEST