به دست آوردن کلیه برنامه های نصب شده در ویندوز:
Registry; uses
procedure TForm1.Button1Click(Sender: T);
const CLAVE =
"\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
var
reg : TRegistry;
Lista : TStringList;
Lista2 : TStringList;
i,n : integer;
begin
{Creamos cosas temporales}
{Create temporal things}
reg := TRegistry.Create;
Lista := TStringList.Create;
Lista2 := TStringList.Create;
{Cargamos todas las subkeys}
{Load all the subkeys}
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(CLAVE,false);
GetKeyNames(Lista);
end;
{Cargamos todos los Nombres de valores}
{Load all the Value Names}
for i := 0 to Lista.Count -1 do
begin
reg.OpenKey(CLAVE + "\" +Lista.Strings[i],false);
reg.GetValueNames(Lista2);
{Mostraremos s?lo los que tengan "DisplayName"}
{We will show only if there is "DisplayName"}
n:=Lista2.IndexOf("DisplayName");
if (n <> -1) and (Lista2.IndexOf("UninstallString")<>-1) then
begin
{DisplayName+UnInstallString}
Memo1.Lines.Append ( reg.ReadString(Lista2.Strings[n])+"-"+
reg.ReadString(Lista2.Strings[Lista2.IndexOf("UninstallString")]) );
end;
end;
{Liberamos temporales}
{Free temporals}
Lista.Free;
Lista2.Free;
reg.CloseKey;
reg.Destroy;
end;
این تابع برای گرفتن نام سیستم بکار می رود
function GetComputerName : String;
var
pcComputer : PChar;dwCSize : DWORD;begin
if Windows.GetComputerName( pcComputer, dwCSize ) then
Result := pcComputer;finally
FreeMem( pcComputer );end;
end;
dwCSize := MAX_COMPUTERNAME_LENGTH + 1;GetMem( pcComputer, dwCSize );try
از این تابع برای گرفتن نام کاربری شخصی که به سیستم لاگین شده است اسفاده می شود:
var
pcUser : PChar;dwUSize : DWORD;begin
FreeMem( pcUser );finallyResult := pcUserif Windows.GetUserName( pcUser, dwUSize ) thendwUSize := 21;GetMem( pcUser, dwUSize );try
برای بازکردن کنترل پنل می توانید از این تابع استفاده کنید:
-Add "ShellApi and ShlObj" in the uses of your form
procedure TForm1.Button1Click(Sender: T);
var
PIDL:PItemIDList;
Info:TShellExecuteInfo;
pInfo:PShellExecuteInfo;
WaitCode:DWord;
begin
{Obtenemos PIDL de la carpeta virtual}
{get PIDL of the virtual folder}
SHGetSpecialFolderLocation(Handle,
CSIDL_CONTROLS,
PIDL);
{Puntero a Info}
{Pointer to Info}
pInfo:=@Info;
{Rellenamos Info}
{Fill info}
with Info do
begin
cbSize:=SizeOf(Info);
fMask:=SEE_MASK_NOCLOSEPROCESS+
SEE_MASK_IDLIST;
wnd:=Handle;
lpVerb:=nil;
lpFile:=nil;
{Parametros al ejecutable}
{Executable parameters}
lpParameters:=nil;
lpDirectory:=nil;
nShow:=SW_ShowNormal;
hInstApp:=0;
lpIDList:=PIDL;
end;
{Ejecutamos}
{Execute}
ShellExecuteEx(pInfo);
{Esperamos que termine}
{Wait to finish}
repeat
WaitCode := WaitForSingle(Info.hProcess,500);
Application.ProcessMessages;
until (WaitCode <> WAIT_TIMEOUT);
end;
از این برنامه برای اجرا کردن یک برنامه تحت Dos و برگرداندن خروجی آن به فرم شما و نمایش آن در یک Memo است.
procedure RunDosInMemo(Que:String;EnMemo:TMemo);
const
CUANTOBUFFER = 2000;
var
Seguridades : TSecurityAttributes;
PaLeer,PaEscribir : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
CuandoSale : DWord;
begin
with Seguridades do
begin
nlength := SizeOf(TSecurityAttributes);
binherithandle := true;
lpsecuritydeor := nil;
end;
{Creamos el pipe...}
if Createpipe (PaLeer, PaEscribir, @Seguridades, 0) then
begin
Buffer := AllocMem(CUANTOBUFFER + 1);
FillChar(Start,Sizeof(Start),#0);
start.cb := SizeOf(start);
start.hStdOutput := PaEscribir;
start.hStdInput := PaLeer;
start.dwFlags := STARTF_USESTDHANDLES +
STARTF_USESHOWWINDOW;
start.wShowWindow := SW_HIDE;
if CreateProcess(nil,
PChar(Que),
@Seguridades,
@Seguridades,
true,
NORMAL_PRIORITY_CLASS,
nil,
nil,
start,
ProcessInfo)
then
begin
{Espera a que termine la ejecucion}
repeat
CuandoSale := WaitForSingle( ProcessInfo.hProcess,100);
Application.ProcessMessages;
until (CuandoSale <> WAIT_TIMEOUT);
{Leemos la Pipe}
repeat
BytesRead := 0;
{Llenamos un troncho de la pipe, igual a nuestro buffer}
ReadFile(PaLeer,Buffer[0],CUANTOBUFFER,BytesRead,nil);
{La convertimos en una string terminada en cero}
Buffer[BytesRead]:= #0;
{Convertimos caracteres DOS a ANSI}
OemToAnsi(Buffer,Buffer);
EnMemo.Text := EnMemo.text + String(Buffer);
until (BytesRead < CUANTOBUFFER);
end;
FreeMem(Buffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(PaLeer);
CloseHandle(PaEscribir);
end;
end;
به عنوان مثال:
RunDosInMemo("chkdsk.exe c:\",Memo1);
برای اضافه کردن اسکرول بار به لیست باکس خود از این روش استفاده کنید..
ListBox1.Perform(LB_SETHORIZONTALEXTENT, 300, 0 );
یا از این روش
SendMessage( ListBox1.Handle, LB_SETHORIZONTALEXTENT, 300, 0 );
برای داشتن یک کامبو باکس با گزینه های که رنگ های گزینه ها با هم فرق می کند می توان از این روش استفاده کرد
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TComboBox) do
begin
{The Odd Items in Red, the others in black}
{Los Items pares de color rojo}
{Los impares en negro}
if Odd(Index) then Canvas.Font.Color:=clRed
else Canvas.Font.Color:=clBlack;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]);
end;
end;
از این تابع برای ذخیره یک تری ویو در یک اینی فایل استفاده کنید
procedure TreeToIni(Tree: TTreeView; INI: TIniFile; Section: string);
var
n: Integer;
MS: TMemoryStream;
tTv: TStringList;
Msg: string;
begin
tTv := TStringList.Create;
MS := TMemoryStream.Create;
try
Tree.SaveToStream(MS);
MS.Position := 0;
tTv.LoadFromStream(MS);
INI.EraseSection(Section);
for n := 0 to tTv.Count - 1 do
INI.WriteString(Section, "Node" + IntToStr(n), StringReplace(tTv[n], #9,
"#", [rfReplaceAll]));
finally
tTv.Free;
MS.Free;
end;
end;
procedure TreeFromIni(Tree: TTreeView; INI: TIniFile; Section: string;
Expand: Boolean);
var
n: Integer;
MS: TMemoryStream;
tTv: TStringList;
Msg: string;
begin
tTv := TStringList.Create;
MS := TMemoryStream.Create;
try
INI.ReadSection(Section, tTv);
for n := 0 to tTv.Count - 1 do
tTv[n] := StringReplace(INI.ReadString(Section, tTv[n], ""), "#", #9,
[rfReplaceAll]);
tTv.SaveToStream(MS);
MS.Position := 0;
Tree.LoadFromStream(MS);
if (Expand = True) and (Tree.Items.Count > 0) then
Tree.Items[0].Expand(True);
finally
tTv.Free;
MS.Free;
end;
end;
برگرفته شده از سایت دنیای برنامه نویسی دلفی(http://mt85.blogfa.com)
از این تابع برای تغییر شکل پنل خود به پنل با گوشهای خمیده استفاده کنید
procedure TForm1.FormCreate(Sender: T);
const
bgcolor = $00FFDDEE;
linecolor = $00554366;
var
img: array of TImage;
reg: hrgn;
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i].ClassName = "TPanel" then
begin
setlength(img, Length(img) + 1);
img[i] := TImage.Create(Self);
img[i].Width := (Components[i] as TPanel).Width;
img[i].Height := (Components[i] as TPanel).Height;
img[i].Parent := (Components[i] as TPanel);
img[i].Canvas.Brush.Color := bgcolor;
img[i].Canvas.pen.Color := bgcolor;
img[i].Canvas.Rectangle(0,0,img[i].Width, img[i].Height);
img[i].Canvas.pen.Color := linecolor;
img[i].Canvas.RoundRect(0,0,img[i].Width - 1,img[i].Height - 1,20,20);
reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width,
(Components[i] as TPanel).Height, 20,20);
setwindowrgn((Components[i] as TPanel).Handle, reg, True);
delete(reg);
end;
end;
end;
برگرفته شده از سایت دنیای برنامه نویسی دلفی(http://mt85.blogfa.com)
با استفاده از این روش شما فرم برنامه شما همواره در وسط صفحه نمایش قرار دارد و امکان تغییر مکان آن وجود ندارد
ابتدا تابع را در قسمت توابع معرفی فرم قرار داده و سپس خود تابع را در برنامه قرار دهید
procedure Centrala(var m: TWMWINDOWPOSCHANGED); message
WM_WINDOWPOSCHANGING ;
procedure TForm1.Centrala(var m : TWMWINDOWPOSCHANGED);
begin
m.windowpos.x := (Screen.Width - Width) div 2; {Left/Posicion X}
m.windowpos.y := (Screen.Height - Height) div 2; {Left/Posicion X}
end;
یک ساعت فوق العاده
اضافه کردن زبان فارسی به ویندوز XP
یک Message Dialog با امکان تغییر نوشته ی دکمه و تمام قسمتها
بستن پنجره
پاک کردن برنامه به وسیله ی خودش
دانلود کردن سورس یک سایت
بدست آوردن آدرس جاری IE
پاک کردن آدرسهای IE
آموزش کار با IntraWeb در دلفی
مبدل ها
تصویر به bmp2icon) Icon)
تشخیص اینکه HARD DISK ما چند درایو دارد.
اینم یک برنامه ای که ICON درایوها را تغییر می دهد.
درست کردن فیلتر زرد رنگ روی ایمیج
[همه عناوین(126)][عناوین آرشیوشده]
بازدید دیروز: 0
کل بازدید :88450

در این وبلاگ سعی میکنم مطالب مربوط به برنامه نویسی دلفی ، پاسکال و گرافیک رایانه ای 2 بعدی و 3 بعدی را به روز کنم منتظر سوالات شما نیز هستم
قویترین سایت دانلود رایگان نرم افزار [18]
دانلود رایگان نرم افزار [40]
دایره المعارف فارسی رایانه [22]
اخبار فناوری 2 [29]
فروش انواع نوت بوک [32]
کتابخانه مجازی ایران [25]
مقالات آماده کامپیوتری [33]
بزرگترین سایت دانلود3 [74]
اخبار فناوری 1 [18]
خفن ترین کدهای جاوا اسکریپت [29]
قیمت انواع سخت افزار2 [34]
آخرین قیمت سخت افزار ها [23]
دانلود کتاب های فارسی [49]
علم الکترونیک و کامپیوتر [28]
[آرشیو(20)]
