<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>blog.dudzik.org.pl</title>
	<link>http://www.blog.dudzik.org.pl</link>
	<description>.netcf, 'mobile devices' i inne</description>
	<pubDate>Wed, 04 Aug 2010 13:57:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3</generator>
	<language>en</language>
			<item>
		<title>Asmax 1004G - resetowanie połączenia - ciąg dalszy</title>
		<link>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia-ciag-dalszy.html</link>
		<comments>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia-ciag-dalszy.html#comments</comments>
		<pubDate>Wed, 04 Aug 2010 13:52:40 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[Windows]]></category>

		<category><![CDATA[ag241]]></category>

		<category><![CDATA[asmax 1004g reset]]></category>

		<category><![CDATA[reset łącza]]></category>

		<category><![CDATA[resetowanie połączenia]]></category>

		<category><![CDATA[zmiana ip]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia-ciag-dalszy.html</guid>
		<description><![CDATA[W zwiazku z wpisem http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html pojawiło się parę próśb o napisanie analogicznego skryptu dla systemu Windows. Najprościej (tj. bez użycia osobnych aplikacji) można to zrealizować skryptem .vbs o poniższej treści:


set WshShell = WScript.CreateObject(&#34;WScript.Shell&#34;)
WshShell.Run &#34;cmd&#34;
WScript.Sleep 100
WshShell.AppActivate &#34;C:\Windows\system32\cmd.exe&#34;
WScript.Sleep 100
WshShell.SendKeys &#34;telnet 192.168.1.254{ENTER}&#34;
WScript.Sleep 100
WshShell.SendKeys &#34;admin{ENTER}&#34; 'login
WScript.Sleep 100
WshShell.SendKeys &#34;xxx{ENTER}&#34; 'haslo
WScript.Sleep 100
WshShell.SendKeys &#34;adsl connection --up{ENTER}&#34; '
WScript.Sleep 200
WshShell.SendKeys &#34;logout{ENTER}&#34; '
WScript.Sleep 200
WshShell.SendKeys &#34;{ENTER}&#34; [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">W zwiazku z wpisem <a href="http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html">http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html</a> pojawiło się parę próśb o napisanie analogicznego skryptu dla systemu Windows. Najprościej (tj. bez użycia osobnych aplikacji) można to zrealizować skryptem .vbs o poniższej treści:</p>
<pre name="code" class="vb">

set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
WshShell.Run &quot;cmd&quot;
WScript.Sleep 100
WshShell.AppActivate &quot;C:\Windows\system32\cmd.exe&quot;
WScript.Sleep 100
WshShell.SendKeys &quot;telnet 192.168.1.254{ENTER}&quot;
WScript.Sleep 100
WshShell.SendKeys &quot;admin{ENTER}&quot; 'login
WScript.Sleep 100
WshShell.SendKeys &quot;xxx{ENTER}&quot; 'haslo
WScript.Sleep 100
WshShell.SendKeys &quot;adsl connection --up{ENTER}&quot; '
WScript.Sleep 200
WshShell.SendKeys &quot;logout{ENTER}&quot; '
WScript.Sleep 200
WshShell.SendKeys &quot;{ENTER}&quot; '
WScript.Sleep 200
WshShell.SendKeys &quot;exit{ENTER}&quot; '
</pre>
<p align="justify">Prosze zmienic ip router (tutaj jest domyślne), login i hasło na właściwe. Skrypt zadziała tylko w przypadku gdy na routerze włączymy dostęp za pomocą usługi telnet.</p>
<p>Poniżej gotowy plik do sciagniecia</p>
<p><a href="http://www.blog.dudzik.org.pl/wp-content/uploads/2010/08/router_restart.vbs" target="_blank" title="Resetuj router">Resetuj router</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia-ciag-dalszy.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Zagadka twarzy na Marsie rozwiązana - Marsa zamieszkują hipopotamy.</title>
		<link>http://www.blog.dudzik.org.pl/zagadka-twarzy-na-marsie-rozwiazana-marsa-zamieszkuja-hipopotamy.html</link>
		<comments>http://www.blog.dudzik.org.pl/zagadka-twarzy-na-marsie-rozwiazana-marsa-zamieszkuja-hipopotamy.html#comments</comments>
		<pubDate>Sun, 01 Aug 2010 18:27:49 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Ogólnie]]></category>

		<category><![CDATA[hipopotam na marsie]]></category>

		<category><![CDATA[hippo on mars]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/zagadka-twarzy-na-marsie-rozwiazana-marsa-zamieszkuja-hipopotamy.html</guid>
		<description><![CDATA[Dzisiejszy deser.pl uraczył mnie artykułem o tytule &#8220;Zagadka &#8220;twarzy&#8221; na Marsie - rozwiązana&#8220;. Dowiedziałem się z niego o tym że to co dotychczas uważano za złudzenie optyczne rzeczywiście nim było i że tak naprawdę nie ma żadnej ludzkiej twarzy na powierzchni Marsa. Na dowód nawet zaprezentowano zdjęcia wysokiej rozdzielczości wykonane przez sondę Mars Reconnaissance Orbiter. [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Dzisiejszy deser.pl uraczył mnie artykułem o tytule &#8220;<a href="http://deser.pl/deser/1,97052,8201541,Zagadka__twarzy__na_Marsie___rozwiazana__ZDJECIE_.html">Zagadka &#8220;twarzy&#8221; na Marsie - rozwiązana</a>&#8220;. Dowiedziałem się z niego o tym że to co dotychczas uważano za złudzenie optyczne rzeczywiście nim było i że tak naprawdę nie ma żadnej ludzkiej twarzy na powierzchni Marsa. Na dowód nawet zaprezentowano zdjęcia wysokiej rozdzielczości wykonane przez sondę <strong>Mars Reconnaissance Orbiter</strong>. Jedno jednak nie daje mi spokoju. <strong>Co, jeśli Marsa zamieszkują hipopotamy?</strong></p>
<p align="justify"> <a href="http://www.blog.dudzik.org.pl/wp-content/uploads/2010/08/hippo-on_mars.jpg"><img src="http://www.blog.dudzik.org.pl/wp-content/uploads/2010/08/hippo-on_mars.jpg" border="0" /></a></p>
<p align="justify">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/zagadka-twarzy-na-marsie-rozwiazana-marsa-zamieszkuja-hipopotamy.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Asmax 1004G - regulowanie granicznego SNR</title>
		<link>http://www.blog.dudzik.org.pl/asmax-1004g-regulowanie-granicznego-snr.html</link>
		<comments>http://www.blog.dudzik.org.pl/asmax-1004g-regulowanie-granicznego-snr.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 17:36:21 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[PhyR]]></category>

		<category><![CDATA[adsl]]></category>

		<category><![CDATA[asmax 1004g]]></category>

		<category><![CDATA[phyReXmt]]></category>

		<category><![CDATA[snr]]></category>

		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/asmax-1004g-regulowanie-granicznego-snr.html</guid>
		<description><![CDATA[W przypadku routerów opartych o chipsety Broadcoma (i nie tylko ale nie o tym tutaj mowa :)) można, za pomocą aplikacji DMT Tool regulować wartość granicznego SNR. Dzięki temu na liniach dobrej jakości można podciągnąć parametry synchronizacji modemu. Niestety Asmax 1004G wydaje się nie współpracować z aplikacją DMT Tool. Wystarczy jednak zatelnetować się na urządzenie [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">W przypadku routerów opartych o chipsety Broadcoma (i nie tylko ale nie o tym tutaj mowa :)) można, za pomocą aplikacji <a href="http://dmt.mhilfe.de/" target="_blank">DMT Tool</a> regulować wartość granicznego SNR. Dzięki temu na liniach dobrej jakości można podciągnąć parametry synchronizacji modemu. Niestety Asmax 1004G wydaje się nie współpracować z aplikacją DMT Tool. Wystarczy jednak zatelnetować się na urządzenie i wydać polecenie:</p>
<p align="justify">
<pre name="code" class="c#">
adsl configure --snr x --phyReXmt on
</pre>
</p>
<p align="justify">gdzie x jest procentowym określeniem granicznego parametru SNR (100 to wartość oryginalna, 50 o połowę mniejsza itd..) . Parametr &#8211;phyReXmt on powoduje włączenie technologii <a href="http://www.broadcom.com/press/release.php?id=1015396" target="_blank">PhyR</a> co dodatkowo powinno wpłynąć na stabilność łącza.</p>
<p align="justify"><strong><font color="#ff0000">PS. DMT Tool jednak może współpracować z routerem Asmax 1004G, należy na routerze ustawić puste hasło <img src='http://www.blog.dudzik.org.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Nie oferuje jednak pełnej funkcjonalności</font></strong></p>
<p align="justify"><strong>PPS.  Oczywiście najpierw należy w urządzeniu włączyć dostęp po telnecie.</strong></p>
<p align="justify"><strong>Management-&gt;Access Control-&gt;Services-&gt; zaznaczamy Telnet w kolumnie LAN</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/asmax-1004g-regulowanie-granicznego-snr.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Asmax 1004G - snmp, mrtg</title>
		<link>http://www.blog.dudzik.org.pl/asmax-1004g-snmp-mrtg.html</link>
		<comments>http://www.blog.dudzik.org.pl/asmax-1004g-snmp-mrtg.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 15:44:03 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[adsl]]></category>

		<category><![CDATA[ag241]]></category>

		<category><![CDATA[asmax 1004g]]></category>

		<category><![CDATA[attenuation]]></category>

		<category><![CDATA[mrtg]]></category>

		<category><![CDATA[snmp]]></category>

		<category><![CDATA[snr]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/asmax-1004g-snmp-mrtg.html</guid>
		<description><![CDATA[W przypadku poprzedniego routera, zbieranie statystyk dotyczacych jakości linii telefonicznej (stosunek sygnału do szumu oraz tłumienie) zrealizowałem poprzez symulowanie przeglądarki komputerowej: zalogowanie sie skryptem na stronę, pobranie jej zawartości, przegrepowanie w poszukiwaniu interesujących wartości.
Na szczęście Asmax 1004G wprowadza normalność w tym temacie i interesujące wartości moge sobie po prostu pobrać za pomocą SNMP i wyświetlić [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">W przypadku poprzedniego routera, zbieranie statystyk dotyczacych jakości linii telefonicznej (stosunek sygnału do szumu oraz tłumienie) zrealizowałem poprzez symulowanie przeglądarki komputerowej: zalogowanie sie skryptem na stronę, pobranie jej zawartości, przegrepowanie w poszukiwaniu interesujących wartości.</p>
<p align="justify">Na szczęście Asmax 1004G wprowadza normalność w tym temacie i interesujące wartości moge sobie po prostu pobrać za pomocą <a href="http://pl.wikipedia.org/wiki/Simple_Network_Management_Protocol" target="_blank">SNMP</a> i wyświetlić za pomocą <a href="http://oss.oetiker.ch/mrtg/" target="_blank">MRTG</a>. Poniżej wycinek z konfiga mrtg.</p>
<p align="justify">
<pre name="code" class="c#">
Title[adslsnr]: SNR i ATTN download
YLegend[adslsnr]: db
MaxBytes[adslsnr]: 5000
Options[adslsnr]: growright, gauge
Target[adslsnr]:1.3.6.1.2.1.10.94.1.1.3.1.4.2&amp;1.3.6.1.2.1.10.94.1.1.3.1.5.2:public@192.168.2.1
PageTop[adslsnr]: &lt;h1&gt;SNR i ATTN download&lt;/h1&gt;
</pre>
<p align="justify">&nbsp;</p>
<p align="justify">Wartości zwracane są w liczbach całkowitych zatem zainteresowani powinni dodać parametr Factor.</p>
<p align="justify">Dla uploadu konfig wygląda tak:</p>
<pre name="code" class="c#">
Title[adslsnrup]: SNR i ATTN upload
YLegend[adslsnrup]: db
MaxBytes[adslsnrup]: 5000
Options[adslsnrup]: growright, gauge
Target[adslsnrup]:1.3.6.1.2.1.10.94.1.1.2.1.4.2&amp;1.3.6.1.2.1.10.94.1.1.2.1.5.2:public@192.168.2.1
PageTop[adslsnrup]:
&lt;h1&gt;SNR i ATTN upload&lt;/h1&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/asmax-1004g-snmp-mrtg.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Asmax 1004G - resetowanie połączenia</title>
		<link>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html</link>
		<comments>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html#comments</comments>
		<pubDate>Sun, 25 Jul 2010 18:22:22 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[ag241]]></category>

		<category><![CDATA[asmax 1004g reset]]></category>

		<category><![CDATA[busybox]]></category>

		<category><![CDATA[reset łącza]]></category>

		<category><![CDATA[resetowanie połączenia]]></category>

		<category><![CDATA[telnet]]></category>

		<category><![CDATA[zmiana ip]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html</guid>
		<description><![CDATA[W przypadku mojego poprzedniego routera ADSL (Linksys AG241) konieczne było symulowanie przeglądarki komputerowej i akcji użytkownika - router ten nie posiadał opcji dostępu poprzez telnet lub ssh.
Zrealizowalem to skryptem nastepujacej treści:

#!/usr/bin/perl -w

use strict;
use warnings;
use LWP;
use HTTP::Request::Common;

our $ua = LWP::UserAgent-&#62;new;

$ua-&#62;request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button =&#62; 'Status_Router', submit_type =&#62; 'disconnect',
change_action =&#62; 'gozila_cgi', wan_proto =&#62; 'pppoe']);

sleep 5;

$ua-&#62;request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button =&#62; 'Status_Router', submit_type [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">W przypadku mojego poprzedniego routera ADSL (Linksys AG241) konieczne było symulowanie przeglądarki komputerowej i akcji użytkownika - router ten nie posiadał opcji dostępu poprzez telnet lub ssh.</p>
<p align="justify">Zrealizowalem to skryptem nastepujacej treści:</p>
<pre name="code" class="c#">
#!/usr/bin/perl -w

use strict;
use warnings;
use LWP;
use HTTP::Request::Common;

our $ua = LWP::UserAgent-&gt;new;

$ua-&gt;request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button =&gt; 'Status_Router', submit_type =&gt; 'disconnect',
change_action =&gt; 'gozila_cgi', wan_proto =&gt; 'pppoe']);

sleep 5;

$ua-&gt;request(POST 'http://haslo:login@192.168.2.1/apply.cgi',
[submit_button =&gt; 'Status_Router', submit_type =&gt; 'connect',
change_action =&gt; 'gozila_cgi', wan_proto =&gt; 'pppoe']);
</pre>
<p align="justify">Aktualnie korzystam z routera Asmax 1004g (mówi się że darowanemu koniowi nie zagląda się w zęby ale ten router to całkiem dobry sprzęt - dzięki Netio :)) i na szczęście umożliwia on zarządzanie poprzez telnet lub ssh.</p>
<p align="justify">Wykorzystując to pierwsze cały wyżej cytowany skrypt zmiescił się w jednej linijce <img src='http://www.blog.dudzik.org.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p align="justify">
<pre name="code" class="c#">
#!/bin/bash
(sleep 2; echo login; sleep 2; echo haslo; sleep 2; echo &quot;adsl connection --up&quot;; sleep 50) | telnet 192.168.2.1
</pre>
<p align="justify">W ten sam sposób można resetować wiekszość (wszystkie?) routery oparte o chipsety Broadcom i udostepniające zarządzanie poprzez telnet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/asmax-1004g-resetowanie-polaczenia.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Referenced package not found File: Device Connectivity Component</title>
		<link>http://www.blog.dudzik.org.pl/referenced-package-not-found-file-device-connectivity-component.html</link>
		<comments>http://www.blog.dudzik.org.pl/referenced-package-not-found-file-device-connectivity-component.html#comments</comments>
		<pubDate>Tue, 01 Jun 2010 11:24:17 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[.NET Compact Framework]]></category>

		<category><![CDATA[Urządzenia mobilne]]></category>

		<category><![CDATA[CoreCon]]></category>

		<category><![CDATA[Device Connectivity Component]]></category>

		<category><![CDATA[Referenced package not found]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/referenced-package-not-found-file-device-connectivity-component.html</guid>
		<description><![CDATA[Rozwiązanie problemu zawartego w tytule:)
Wystarczy zamknąć Visual Studio i wejść do:
C:\Documents and Settings\&#60;uzytkownik&#62; \Ustawienia lokalne\Dane Aplikacji\Microsoft\
zmienić nazwę katalogu CoreCon i ponownie uruchomićVS.
]]></description>
			<content:encoded><![CDATA[<p>Rozwiązanie problemu zawartego w tytule:)</p>
<p>Wystarczy zamknąć Visual Studio i wejść do:</p>
<p>C:\Documents and Settings\&lt;uzytkownik&gt; \Ustawienia lokalne\Dane Aplikacji\Microsoft\</p>
<p>zmienić nazwę katalogu CoreCon i ponownie uruchomićVS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/referenced-package-not-found-file-device-connectivity-component.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Zdalny dostęp do ekranu urządzenia przenośnego (ciąg dalszy)</title>
		<link>http://www.blog.dudzik.org.pl/zdalny-dostep-do-ekranu-urzadzenia-przenosnego-ciag-dalszy.html</link>
		<comments>http://www.blog.dudzik.org.pl/zdalny-dostep-do-ekranu-urzadzenia-przenosnego-ciag-dalszy.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:13:28 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[.NET Compact Framework]]></category>

		<category><![CDATA[Informatyka]]></category>

		<category><![CDATA[Urządzenia mobilne]]></category>

		<category><![CDATA[remote control]]></category>

		<category><![CDATA[remote windows ce]]></category>

		<category><![CDATA[remote windows mobile]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/zdalny-dostep-do-ekranu-urzadzenia-przenosnego-ciag-dalszy.html</guid>
		<description><![CDATA[W nawiązaniu do wpisu Zdalny dostęp do ekranu urządzenia przenośnego podaje kolejną aplikację umożliwiająca wygodniejsze operacje na ekranie terminala mobilnego. Jest to dość stary (ostatnia wersja z 2001/11/27) już rCe dostępny wraz z innymi aplikacjami pod tym adresem.  Freeware.
]]></description>
			<content:encoded><![CDATA[<p>W nawiązaniu do wpisu <a href="http://www.blog.dudzik.org.pl/zdalny-dostep-do-ekranu-urzadzenia-przenosnego.html">Zdalny dostęp do ekranu urządzenia przenośnego</a> podaje kolejną aplikację umożliwiająca wygodniejsze operacje na ekranie terminala mobilnego. Jest to dość stary (ostatnia wersja z 2001/11/27) już rCe dostępny wraz z innymi aplikacjami pod <a href="http://www.nakka.com/soft/ptools/index_eng.html">tym adresem</a>.  Freeware.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/zdalny-dostep-do-ekranu-urzadzenia-przenosnego-ciag-dalszy.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Jak uzyskać kontrastowe tło?</title>
		<link>http://www.blog.dudzik.org.pl/jak-uzyskac-kontrastowe-tlo.html</link>
		<comments>http://www.blog.dudzik.org.pl/jak-uzyskac-kontrastowe-tlo.html#comments</comments>
		<pubDate>Tue, 23 Feb 2010 09:31:28 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[.NET Framework]]></category>

		<category><![CDATA[Informatyka]]></category>

		<category><![CDATA[GetBrightness]]></category>

		<category><![CDATA[contrast color]]></category>

		<category><![CDATA[get color]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/jak-uzyskac-kontrastowe-tlo.html</guid>
		<description><![CDATA[Proste i skuteczne:


private static Color GetContrastColor(Color c)
{
	return (c.GetBrightness() &#62; 0.4) ? Color.Black : Color.White;
}

]]></description>
			<content:encoded><![CDATA[<p>Proste i skuteczne:</p>
<pre name="code" class="c#">

private static Color GetContrastColor(Color c)
{
	return (c.GetBrightness() &gt; 0.4) ? Color.Black : Color.White;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/jak-uzyskac-kontrastowe-tlo.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ukrycie paska postępu - WebBrowser, CF2.0</title>
		<link>http://www.blog.dudzik.org.pl/ukrycie-paska-postepu-webbrowser-cf20.html</link>
		<comments>http://www.blog.dudzik.org.pl/ukrycie-paska-postepu-webbrowser-cf20.html#comments</comments>
		<pubDate>Fri, 01 Jan 2010 15:06:13 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[.NET Compact Framework]]></category>

		<category><![CDATA[Informatyka]]></category>

		<category><![CDATA[Urządzenia mobilne]]></category>

		<category><![CDATA[compact framework]]></category>

		<category><![CDATA[disable progress bar]]></category>

		<category><![CDATA[disable progress bar webbrowser]]></category>

		<category><![CDATA[hide progress bar webbrowser]]></category>

		<category><![CDATA[progress bar webbrowser]]></category>

		<category><![CDATA[webbrowser]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/ukrycie-paska-postepu-webbrowser-cf20.html</guid>
		<description><![CDATA[Niejako uzupełniając zagadnienie poruszone w wpisie Blokada ContextMenu na komponencie WebBrowser chcę Wam przedstawić sposób ukrycia paska postępu ładowania strony. Pojawia się on zawsze w dolnej części komponentu WebBrowser i czasami może być denerwujący :).
Całość zagadnienia sprowadza się do wywołania funkcji DestroyWindow z biblioteki coredll.dll .
Kod wygląda następująco (podobnie jak poprzednio tworze własną kontrolkę dziedzicząc [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Niejako uzupełniając zagadnienie poruszone w wpisie <a href="http://www.blog.dudzik.org.pl/blokada-contextmenu-na-komponencie-webbrowser-2.html">Blokada ContextMenu na komponencie WebBrowser</a> chcę Wam przedstawić sposób ukrycia paska postępu ładowania strony. Pojawia się on zawsze w dolnej części komponentu WebBrowser i czasami może być denerwujący :).</p>
<p align="justify">Całość zagadnienia sprowadza się do wywołania funkcji DestroyWindow z biblioteki coredll.dll .</p>
<p align="justify">Kod wygląda następująco (podobnie jak poprzednio tworze własną kontrolkę dziedzicząc po WebBrowser - wydaje mi sie to najprostszym rozwiązaniem)</p>
<pre name="code" class="c#">
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Dudzik.Helpers
{
    public class WebBrowserExt : System.Windows.Forms.WebBrowser
    {
        private IntPtr child, pieHtml;

        [DllImport(&quot;coredll&quot;)]
        extern static IntPtr GetCapture();

        [DllImport(&quot;coredll.dll&quot;, EntryPoint = &quot;GetWindow&quot;)]
        private static extern IntPtr GetWindow(IntPtr handleWindow, int cmd);

        [DllImport(&quot;coredll.dll&quot;)]
        private static extern bool DestroyWindow(IntPtr hwnd);  

        protected override void OnHandleCreated(EventArgs e)
        {
            IntPtr webHandle = GetHWND(this);
            child = GetWindow(webHandle, 5);
            pieHtml = GetWindow(child, 5); //MSPIE Status

            DestroyWindow(pieHtml);

            base.OnHandleCreated(e);
        }

        private IntPtr GetHWND(Control ctl)
        {
            ctl.Capture = true;
            IntPtr hWnd = GetCapture();
            ctl.Capture = false;
            return hWnd;
        }
    }
}
</pre>
<p align="justify">Oczywiście nic nie stoi na przeszkodzie by połączyć to z ukrywaniem ContextMenu. Uzyskany kod powinien  wyglądać następująco</p>
<pre name="code" class="c#">
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Dudzik.Helpers
{
    public class WebBrowserExt : System.Windows.Forms.WebBrowser
    {
        private IntPtr child, pieHtml;
        private static WndProcDelegate newWndProc;
        private static IntPtr oldWndProc = IntPtr.Zero, oldSipProc = IntPtr.Zero;

        internal const int GWL_WNDPROC = -4;
        internal const int WM_LBUTTONUP = 0x0202;

        [DllImport(&quot;coredll&quot;)]
        extern static IntPtr GetCapture();

        [DllImport(&quot;coredll.dll&quot;, EntryPoint = &quot;GetWindow&quot;)]
        private static extern IntPtr GetWindow(IntPtr handleWindow, int cmd);

        [DllImport(&quot;coredll.dll&quot;, EntryPoint = &quot;GetWindowLong&quot;)]
        private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);

        [DllImport(&quot;coredll.dll&quot;)]
        private static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr newWndProc);

        [DllImport(&quot;coredll.dll&quot;)]
        private static extern int PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        [DllImport(&quot;coredll.dll&quot;)]
        private static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        [DllImport(&quot;coredll.dll&quot;)]
        private static extern bool DestroyWindow(IntPtr hwnd);  

        delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

        protected override void OnHandleCreated(EventArgs e)
        {
            IntPtr webHandle = GetHWND(this);
            child = GetWindow(webHandle, 5);
            pieHtml = GetWindow(child, 5); //MSPIE Status
            child = GetWindow(pieHtml, 2); //PIEHTML

            newWndProc = new WndProcDelegate(WndProc);
            oldWndProc = GetWindowLong(child, GWL_WNDPROC);
            int success = SetWindowLong(child, GWL_WNDPROC, Marshal.GetFunctionPointerForDelegate(newWndProc));

            DestroyWindow(pieHtml);

            base.OnHandleCreated(e);
        }

        private IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            if (msg == 0x0020)
            {
                PostMessage(this.Handle, WM_LBUTTONUP, 0, 0);
                return IntPtr.Zero;
            }

            return CallWindowProc(oldWndProc, child, msg, wParam, lParam);
        }

        private IntPtr GetHWND(Control ctl)
        {
            ctl.Capture = true;
            IntPtr hWnd = GetCapture();
            ctl.Capture = false;
            return hWnd;
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/ukrycie-paska-postepu-webbrowser-cf20.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Tanie odnowienie domeny</title>
		<link>http://www.blog.dudzik.org.pl/tanie-odnowienie-domeny.html</link>
		<comments>http://www.blog.dudzik.org.pl/tanie-odnowienie-domeny.html#comments</comments>
		<pubDate>Thu, 24 Dec 2009 00:00:29 +0000</pubDate>
		<dc:creator>Adam Dudzik</dc:creator>
		
		<category><![CDATA[Ogólnie]]></category>

		<category><![CDATA[masternet]]></category>

		<category><![CDATA[tania domena]]></category>

		<category><![CDATA[tanie domeny]]></category>

		<category><![CDATA[tanie odnowienie]]></category>

		<guid isPermaLink="false">http://www.blog.dudzik.org.pl/tanie-odnowienie-domeny.html</guid>
		<description><![CDATA[Powoli zbliża się moment odnowienia mojej głównej domeny dudzik.org.pl. Domena pierwotnie zarejestrowana była w home.pl i tam też została już parę razy odnowiona. Nie uśmiecha mi się jednak po raz kolejny wydawać na ten cel kwoty 75 złotych netto. Suma ta okazała się być wystarczającą motywacją by znaleźć tańszego rejestratora. Takim okazał się być masternet.pl. [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Powoli zbliża się moment odnowienia mojej głównej domeny <strong>dudzik.org.pl</strong>. Domena pierwotnie zarejestrowana była w home.pl i tam też została już parę razy odnowiona. Nie uśmiecha mi się jednak po raz kolejny wydawać na ten cel kwoty 75 złotych netto. Suma ta okazała się być wystarczającą motywacją by znaleźć tańszego rejestratora. Takim okazał się być <a href="http://www.masternet.pl/?site=00943" target="_blank"><strong>masternet.pl</strong></a>. Firma oferuje odnowienie domen funkcjonalnych w cenie 37 złotych netto a &#8220;peelek&#8221; już po 45 złotych. I to jest cena bez żadnych gwiazdek. Kod authinfo udostępniany bez żadnych ceregieli i dodatkowych opłat. Co ważne niska cena w żaden sposób nie odzwierciedla jakości usług. Kontakt z administratorem szybki i bezproblemowy, udzielane przez niego odpowiedzi konkretne i rzeczowe. Panel zarządzający autorski, całkiem fajnie rozwiązany - wszystkomający :).</p>
<p align="justify">Polecam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.dudzik.org.pl/tanie-odnowienie-domeny.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
