26.11.2014 Views

Январь - Xakep Online

Январь - Xakep Online

Январь - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ÊÎÄÈÍÃ ///// ISSUE<br />

DELPHI<br />

Ïîëíûé èñõîäíûé êîä è âñþ íåîáõîäèìóþ ê íåìó<br />

ëàáóäó òû ìîæåøü îáíàðóæèòü íà äèñêå.<br />

öèè äëÿ ðàáîòû ñ êîíòåêñòíûì ìåíþ. ×òî æ, ïîåõàëè ïî ïîðÿäêó.<br />

 ôóíêöèè QueryContextMenu ìû äîëæíû âñòàâèòü âñå æåëàåìûå<br />

ïóíêòû ìåíþ, à óæå â InvokeCommand îïðåäåëèòü, êàêîå êîëäîâñòâî<br />

áóäåò ïðîèñõîäèòü ïðè íàæàòèè íà êàæäûé ïóíêò. Ïîñìîòðè<br />

ñîðåö íà äèñêå, òàì âñå ïðîñòî ;).<br />

Âîò âðîäå áû è âñå, ÷òî íóæíî äëÿ ñîçäàíèÿ ýëåìåíòàðíîãî òóëáàðà,<br />

íî òàê êàê ìû áóäåì èñïîëüçîâàòü êîìïîíåíòû äëÿ ââîäà ñ êëàâèàòóðû<br />

(Memo, Edit è òä.), òî íàì íóæíî ðåàëèçîâàòü ôîêóñ, à òî<br />

ìû ïðîñòî-íàïðîñòî íå ñìîæåì ïîëó÷èòü â òóëáàðå íèêàêîé èíôû<br />

ñ êëàâû. Ìåòîäû äëÿ ðàáîòû ñ ôîêóñîì îáúÿâëåíû â èíòåðôåéñå<br />

IInputObject.<br />

UIActivateIO, êàê íàïèñàíî â MSDN, ýòà ôóíêöèÿ àêòèâèðóåò/äåàêòèâèðóåò<br />

îáúåêò, òî÷íåå îíà ìåíÿåò ôîêóñ â çàâèñèìîñòè îò ïåðåìåííîé<br />

fActivate. Ïðîñòî äåëàåì SetFocus, åñëè fActivate — èñòèíà, è íè÷åãî<br />

íå äåëàåì, åñëè fActivate — ëîæü.<br />

HasFocusIO îïðåäåëÿåò, ñóùåñòâóåò ëè êëàâèøíûé ôîêóñ, è íà îñíîâàíèè<br />

îòâåòà äåëàåò âûâîäû. Ðåàëèçóåòñÿ ëåãêî: ïðîñòî âîçâðàùàåì<br />

â íåå ôîêóñ ;).<br />

TranslateAcceleratorIO — çäåñü íóæíî îòëîâèòü íàæàòèå êëàâèøè <br />

è ïîñëàòü ôîêóñ â äàëåêîå ïóòåøåñòâèå ïî òóëáàðíûì ïðîñòîðàì.<br />

Ïîìèìî âñåãî ïðî÷åãî, íå ñòîèò çàáûâàòü: ÷òîáû COM-ñåðâåð ó íàñ<br />

çàðàáîòàë, íàì íóæíî ñîçäàòü åãî GUID. GUID — ýòî òàêîé ID ñåðâåðà,<br />

êîòîðûé îáåñïå÷èâàåò åãî óíèêàëüíîñòü âî Âñåëåííîé è âî âñåõ<br />

èçìåðåíèÿõ. Äîñòèãàåòñÿ ýòî ñ ïîìîùüþ ìàíèïóëÿöèé ñ äàòîé è âðåìåíåì,<br />

à òàêæå ïàðàìåòðàìè æåëåçà. Â ñðåäå Delphi ñäåëàíî âñå çà<br />

íàñ, è ïî íàæàòèþ â ïîçèöèþ êóðñîðà ïîìåùàåòñÿ<br />

ñãåíåðèðîâàííûé GUID. Áåç íåãî òåáå íå óäàñòñÿ çàðåãèñòðèðîâàòü<br />

òóëáàð. ×òîáû çàðåãèñòðèðîâàòü ëþáîé COM-ñåðâåð, íóæíî ñîçäàòü<br />

íåñêîëüêî êëþ÷åé â ðååñòðå. Âîò îíè:<br />

HKEY_CLASSES_ROOT\CLSID\[ÃÓÈÄ]\. Çäåñü ïèøåì íàçâàíèå COMñåðâåðà<br />

â çíà÷åíèè ïî óìîë÷àíèþ.  íàøåì ñëó÷àå — ProxyBar.<br />

HKEY_CLASSES_ROOT\CLSID\[ÃÓÈÄ]\InProcServer32. Íå áóäåì çàöèêëèâàòüñÿ<br />

íà ïîòî÷íîé ìîäåëè COM, è â êëþ÷ ThreadingModel çàïèøåì<br />

Apartment. Åñëè òåáÿ èíòåðåñóåò, ÷òî ýòî çà çâåðü, òî ëèòåðàòóðû ïî<br />

COM ñóùåñòâóåò îãðîìíîå êîëè÷åñòâî, è, äóìàþ, ñ ïîèñêîì ïðîáëåì<br />

âîçíèêíóòü íå äîëæíî.<br />

HKEY_CLASSES_ROOT\CLSID\[ÃÓÈÄ]\Implemented Categories\[Òèï òóëáàðà].<br />

 ýòîì êëþ÷å ïèñàòü íè÷åãî íå íàäî, åãî íóæíî ïðîñòî ñîçäàòü.<br />

Îí áóäåò äàâàòü õàðàêòåðèñòèêó íàøåìó COM-ñåðâåðó. Â íàøåì ñëó-<br />

÷àå òèï òóëáàðà — ýòî DeskBand, à åãî GUID ðàâåí {00021492-0000-<br />

0000-C000-000000000046}, ÷òî î÷åíü ëåãêî çàïîìíèòü :).<br />

È êóëüìèíàöèîííûì ìîìåíòîì ðåãèñòðàöèè ÿâëÿåòñÿ îáúÿâëåíèå íàøåãî<br />

COM-ñåðâåðà êàê òóëáàðà. Â HKEY_CURRENT_USER\Software\Microsoft\<br />

Internet Explorer\Toolbar\WebBrowser ñîçäàåì ïóñòîé êëþ÷ [ÃÓÈÄ] è íà÷èíàåì<br />

ðàñïå÷àòûâàòü ñëåäóþùóþ áóòûëêó ñîêà.<br />

Íî ÷òî äåëàòü ñ ýòèìè [ÃÓÈÄ]? Êàê æå îòêðûâàòü êëþ÷è ðååñòðà, îíè<br />

âåäü string, à ýòî TGUID? À ëåãêî! Ñóùåñòâóåò òàêàÿ ôóíêöèÿ, êàê<br />

GuidToString. Âîò è èñïîëüçóé åå ïî íàçíà÷åíèþ.<br />

Íå çàáûâ ñäåëàòü â ïðîöåäóðå àíðåãà óäàëåíèå ðàíåå ñîçäàííûõ êëþ÷åé,<br />

ìîæíî ñ÷èòàòü, ÷òî çâåðþãà ãîòîâà. È ÷òî ìîæíî íà÷èíàòü ó÷èòü åå æèçíè ;).<br />

ÏÐÎÊÑÈ<br />

ÎÁÚÅÇÆÀÅÌ<br />

Ôîðìà ãîòîâà, íî îíà ïóñòà è ïðîêó îò íåå íå áîëüøå, ÷åì îò áåçàëêîãîëüíîãî<br />

ñîêà. Ïðèäåòñÿ èñïðàâëÿòü. Íà ôîðìå ó íàñ ðàñïîëîæèòñÿ<br />

ComboBox è êíîïêà. Â ComboBox'å áóäåò íàõîäèòüñÿ ñàì ïðîêñè ëèñò, à<br />

êíîïêîé ìû áóäåì ìåíÿòü ïðîêñè íà âûáðàííûé íàìè âàðèàíò. ×òîáû<br />

ïðèöåïèòü ïðîêñèê ê IE îñîáîãî òðóäà íå òðåáóåòñÿ, âñåãî-íàâñåãî íóæíî<br />

ìåíÿòü çíà÷åíèå êëþ÷à HKEY_CURRENT_USER\Software\Microsoft\<br />

Windows\CurrentVersion\Internet Settings\ProxyServer íà çíà÷åíèå âèäà<br />

proxy:port, à òàêæå èçìåíèòü ñòîÿùèé ðÿäîì êëþ÷ ProxyEnable íà 1, è äåëî<br />

â øëÿïå. Ñ ýòèì ïðîáëåì âîçíèêíóòü íå äîëæíî. Òàê êàê â<br />

ComboBox'å áóäóò õðàíèòüñÿ âñå ïðîêñèêè, òî ìû äîëæíû ñîõðàíÿòü<br />

ýòîò ëèñò è çàãðóæàòü ïðè ñîçäàíèè òóëáàðà. Â ñîáûòèè FormCreate ïðîïèñûâàåøü<br />

Combobox1.Items.LoadFromFile('C:\Proxy.txt'), è ïðîêñè îêàçûâàþòñÿ<br />

â ëèñòå, à ñîõðàíÿòü èõ íàäî â ñîáûòèè FormDestroy<br />

Combobox1.Items.SaveToFile. Âîò è âñå, ÷åéíäæåð ïðîêñè çàêîí÷åí.<br />

Òåïåðü ó òåáÿ åñòü dll'êà, íî ïðåæäå ÷åì ðàäîâàòüñÿ æèçíè è äîïèâàòü<br />

ñëàáîàëêîãîëüíûå íàïèòêè, ìèðíî ñòîÿùèå ó òåáÿ íà ñòîëå, ñòîèò åå<br />

çàðåãèñòðèðîâàòü. Äåëàåòñÿ ýòî ñ ïîìîùüþ ñòàíäàðòíîé âèíäîâîé<br />

óòèëèòû regsvr32.<br />

âîò òàê ïîäãðóæàåì íàøó ïàíåëü<br />

regsvr32 C:\proxybar.dll<br />

à òàê âûãðóæàåì<br />

regsvr32 -u C:\proxybar.dll<br />

Òàê êàê ðåãèñòðàöèÿ ïðîõîäèò ÷åðåç ìåòîä UpdateRegistry, òî ìîæíî<br />

âñòàâèòü òóäà ÷òî-íèáóäü âðîäå ShowMessage('Ñïàñèáî òåáå çà ðåãèñòðàöèþ')<br />

èëè ñðàçó ðåäèðåêòèòü íà ñòðàíèöó ðàçðàáîò÷èêà. Êñòàòè, î<br />

ïòè÷êàõ. ×òîáû ïîëó÷èòü êîíòðîëü íàä áðàóçåðîì, áóäü òî ðåäèðåêò èëè<br />

ïîëó÷åíèå êîíòåíòà ñòðàíè÷êè, òåáå ïîòðåáóåòñÿ ðàçîáðàòüñÿ ñ èíòåðôåéñîì<br />

IWebBrowser2. Äóìàþ, ÷òî òû óæå ñòàëêèâàëñÿ ñ êîìïîíåíòîì<br />

TwebBrowser. Âñå ôóíêöèè, êîòîðûå â íåì åñòü, çàèìñòâîâàíû êàê ðàç<br />

èç IWebBrowser2. Òû ìîæåøü þçàòü ôóíêöèè Navigate, Stop, Refresh è<br />

áûòü ñ÷àñòëèâûì, íî ïîìíè, ÷òî íåëüçÿ äåëàòü òàê: IE.Navigate(Url, 0, 0,<br />

0, 0); íóæíî îáÿçàòåëüíî îáúÿâèòü ïåðåìåííóþ òèïà OleVariant è ïðèñâîèòü<br />

åé çíà÷åíèå: IE.Navigate(Url, X, X, X, X); Íèêàêèõ íóëåé!<br />

«ÒÅÏÅÐÜ ÌÍÅ ÑÓÕÎ È ÊÎÌÔÎÐÒÍλ(C)<br />

 ðåçóëüòàòå ìû ñ òîáîé ñîòâîðèëè îòëè÷íûé òóëáàð, ïî÷òè íå íàïðÿãàÿñü.<br />

Óâåðåí, ÷òî òû óæå ãîðèøü æåëàíèåì êàê-íèáóäü åãî äîðàáîòàòü, äîáàâèòü<br />

ìèíè proxy-÷åêåð, ïðîâåðêó íà âðåìÿ îòêëèêà è ïðî÷èå íóæíûå âåùè. Íî îäíîé<br />

ñìåíîé proxy-ñåðâåðîâ ðàçðàáîòêà òóëáàðîâ äëÿ IE, êàê òû ïîíèìàåøü,<br />

íå îãðàíè÷èâàåòñÿ!  IE ìîæíî ëåãêî ìåíÿòü àáñîëþòíî ëþáûå íàñòðîéêè,<br />

áëàãî õðàíÿòñÿ îíè â ðååñòðå. Ìîæíî, íàïðèìåð, ñîçäàòü Security Explorer<br />

Bar, ãäå îäíèì êëèêîì ìîæíî áóäåò èçìåíèòü ïàðàìåòðû ïðèåìà êóêèñîâ<br />

èëè î÷èùàòü õèñòîðè. Âñå, ÷òî òåáå íóæíî, — msdn, ýòà ñêðîìíàÿ ñòàòüÿ è,<br />

êîíå÷íî æå, íåìíîãî âîîáðàæåíèÿ. Íàäåþñü, ÿ òåáÿ çàèíòåðåñîâàë.<br />

BINARY YOUR’S z<br />

Äîáûâàòü ïðîêñè ìîæíî ðàçíûìè ïóòÿìè. Êòî-òî ñêàíèðóåò<br />

äèàïàçîíû íà îòêðûòûå ïîðòû 80, 3128, 8080,<br />

êòî-òî ïîêóïàåò äîñòóï ê áîëüøîìó è óäîáíîìó ëèñòó,<br />

êòî-òî ñ ãîðÿùèìè ãëàçàìè áåãàåò ïî ôîðóìàì, ãäå ìîãóò<br />

âûëîæèòü ïàðî÷êó àäðåñîâ (âðîäå asechka.ru). ß ïî<br />

ýòîìó ïîâîäó íå î÷åíü íàïðÿãàþñü, ïðîñòî ïîòðîøó ðåñóðñû<br />

ñ ïàáëèê-ïðîêñÿìè, ÷åêàþ èõ, ïîñëå ÷åãî î÷èùàþ<br />

ïîëó÷åííûé ëèñò îò ñåðâåðîâ íàøèõ òîâàðèùåé èç<br />

FBI è US Army ;).<br />

Ïóáëè÷íûå ëèñòû ïðîêñè-ñåðâåðîâ èùè ïî ñëåäóþùèì<br />

àäðåñàì:<br />

http://www.samair.ru/proxy/<br />

http://proxy.mazafaka.ru/<br />

http://nntime.com/proxy/<br />

http://proxy.asechka.ru/index.php?page=proxylist<br />

Îíëàéíîâûé proxy-÷åêåð:<br />

http://proxy.asechka.ru/index.php?page=proxychecker<br />

Îíëàéíîâûé proxy-ôèëüòð:<br />

http://proxy.asechka.ru/index.php?page=proxyfilter<br />

122 XÀÊÅÐ 01 /85/ 06

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!