środa, 16 stycznia 2008

Windows: Interakcja z użytkownikiem w plikach *.cmd

Jak pobrać od użytkownika tekst z klawiatury i zapamiętać go w zmiennej środowiskowej ?
Trzeba skorzystać z polecenia SET korzystając z dość karkołomnej składni
set /p KAT="Podaj nazwę katalogu: "
jak widać potrzebny jest przełącznik /p a tam gdzie jest zwykle wartość zmiennej, wpisujemy tekst zachęty dla użytkownika. Po wykonaniu tego polecenia zmienna KAT zawiera wprowadzony przez użytkownika tekst.

Windows: Instalacja drukarki z pliku *.inf

Można kliknąć prawym i wybrać Zainstaluj, jednak zwykle to nic nie daje i trzeba skorzystać z kreatora dodawania drukarki. Można tego uniknąć wydając dwa polecenia
rundll32 printui.dll,PrintUIEntry /ia /f plik.inf /m "Nazwa sterownika"
rundll32 printui.dll,PrintUIEntry /if /f plik.inf /m "Nazwa drukarki" /r "PORT:"

Pierwsze instaluje sterownik, drugie dodaje drukarkę. Nazwy sterownika i drukarki zwykle są takie same. Można te polecenia wykorzystać do utworzenia skryptu automatycznie instalującego drukarkę.
Więcej tutaj

niedziela, 6 stycznia 2008

Windows: Jak usunąć z pulpitu ikonę Sony Ericsson

W rejestrze otworzyć klucz
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\

będą tam klucze z nazwami typu GUID. Trzeba popatrzeć, który klucz odpowiada za ikonkę Sony Ericssona (wartość domyślna), u mnie był to
{A5110426-177D-4e08-AB3F-785F10B4439C}


W podobny sposób można usunąć z pulpitu Kosz.

piątek, 4 stycznia 2008

Windows: Wyłączenie funkcji Zapobieganie wykonywaniu danych

W pliku BOOT.INI trzeba zmienić parametr /noexecute=optin na /noexecute=alwaysoff

Więcej informacji tutaj

Aktualizacja:
Problem z DEP wystąpił m. in. podczas instalacji Acrobat Readera 8. Po wyłączeniu tego mechanizmu, ciągle nie można było zainstalować niektórych programów. Przyczyną był brak aktualizacji Windows Installera do wersji 3.1. Do pobrania tutaj

czwartek, 3 stycznia 2008

Delphi: Odczyt tekstu ze schowka

Jak sprawdzić czy w schowku jest tekst i jak go odczytać.
uses Clipbrd;

function GetTextFromClipboard:string;
var
dwLen : Cardinal;
hData : THandle;
ps1,
ps2 : PChar;
begin
Result := '';
with Clipboard do
begin
try
Open;
if(HasFormat(CF_TEXT)) then
begin
hData := GetClipboardData(CF_TEXT);
ps1 := GlobalLock(hData);
dwLen := GlobalSize(hData);
ps2 := StrAlloc(1 + dwLen);
StrLCopy( ps2, ps1, dwLen );
Result := ps2;
GlobalUnlock( hData );
StrDispose( ps2 ) ;
end;
finally
Close;
end;
end;
end;