آقای تاجیک از کدتون استفاده کردم. ممنون از کمکتون.
اما چندتا مشکل داشتم اگه ممکنه لطف کنید و جوابشون رو بدین.
1. وقتی که برنامه رو میخوام تو دلفی 7 باز کنم پیام خطایی میده که تو عکس مشخصه.
2. کدی رو که شما نوشته بودین به صورت زیر تغییر دادم اما فقط تیک یکی از قسمتها رو برمیداره و تیک گزینه Tools -- Internet Option -- Connection -- Settings -- Proxy Serverرو برنمیداره.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,registry, XPMan;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function GetRegistryData(RootKey: HKEY; Key,Value: string): variant;
var
Reg: TRegistry;
RegDataType: TRegDataType;
DataSize, Len: integer;
s: string;
label cantread;
begin
Reg := nil;
try
Reg := TRegistry.Create(KEY_QUERY_VALUE);
Reg.RootKey := RootKey;
if Reg.OpenKeyReadOnly(Key) then begin
try
RegDataType := Reg.GetDataType(Value);
if (RegDataType = rdString) or
(RegDataType = rdExpandString) then
Result := Reg.ReadString(Value)
else if RegDataType = rdInteger then
Result := Reg.ReadInteger(Value)
else if RegDataType = rdBinary then begin
DataSize := Reg.GetDataSize(Value);
if DataSize = -1 then
raise Exception.Create(SysErrorMessage(ERROR_CANTREAD));
SetLength(s, DataSize);
Len := Reg.ReadBinaryData(Value, PChar(s)^, DataSize);
if Len <> DataSize then
raise Exception.Create(SysErrorMessage(ERROR_CANTREAD));
Result := s;
end else
raise Exception.Create(SysErrorMessage(ERROR_CANTREAD));
except
s := ''; // Deallocates memory if allocated
Reg.CloseKey;
raise;
end;
Reg.CloseKey;
end else
raise Exception.Create(SysErrorMessage(GetLastError));
except
Reg.Free;
raise;
end;
Reg.Free;
end;
//====================================
procedure SetRegistryData(RootKey: HKEY; Key, Value: string;
RegDataType: TRegDataType; Data: variant);
var
Reg: TRegistry;
s: string;
begin
Reg := nil;
try
Reg := TRegistry.Create(KEY_WRITE);
Reg.RootKey := RootKey;
if Reg.OpenKey(Key, True) then begin
try
if RegDataType = rdUnknown then
RegDataType := Reg.GetDataType(Value);
if RegDataType = rdString then
Reg.WriteString(Value, Data)
else if RegDataType = rdExpandString then
Reg.WriteExpandString(Value, Data)
else if RegDataType = rdInteger then
Reg.WriteInteger(Value, Data)
else if RegDataType = rdBinary then begin
s := Data;
Reg.WriteBinaryData(Value, PChar(s)^, Length(s));
end else
raise Exception.Create(SysErrorMessage(ERROR_CANTWRITE)) ;
except
Reg.CloseKey;
raise;
end;
Reg.CloseKey;
end else
raise Exception.Create(SysErrorMessage(GetLastError));
except
Reg.Free;
raise;
end;
Reg.Free;
end;
//=========================
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
var
a : String;
begin
a := getRegistryData(HKEY_CURRENT_USER,'\Software\Micro soft\Windows\CurrentVersion\Internet Settings', 'ProxyEnable');
if a = '1' then
begin
try
begin
SetRegistryData(HKEY_CURRENT_USER,'\Software\Micro soft\Windows\CurrentVersion\Internet Settings', 'ProxyEnable', rdinteger,0);
MessageDlg(' تنظیمات مرورگر شما انجام شد',mtWarning,[mbOK],0);
Form1.Close;
end;
Except
MessageDlg('ãÊÇÓÝÇäå ÏÑ ÇÌÑÇí ÈÑäÇãå ãÔ˜áí íÔ ÂãÏå . áØÝÇ ãÌÏÏÇ ÓÚí äãÇííÏ',mtWarning,[mbOK],0);
end;
end
else
begin
MessageDlg(' مرورگر شما هیچ مشکلی ندارد',mtWarning,[mbOK],0);
Form1.Close;
end;
end;
end.
3. فایلهای زیر چی هستن و کاربردشون چیه؟ آیا بدون این فایلها برنامه اجرا میشه؟
Registry_Sample.dproj.2007
Registry_Sample.dproj
Clean.bat
Registry_Sample.identcache
Registry_Sample.dproj.local
4. وقتی فایل اجرایی برنامه ساخته میشه نام شما به صورت کم رنگ زیر این فایل نوشته میشه، میخواستم ببینم این کار رو چه طور انجام دادین؟؟؟ و آیا میشه اون متن نوشته شده رو تغییر داد یا نه؟؟؟؟
5. وقتی کد بالا رو تو رویداد On Show یک فرم نوشتم و خواستم برنامه رو اجرا کنم تعداد زیادی پیام خطا داد. البته اون دو تا تابع رو هم نوشته بودم. ممکنه این خطاها از نبود فایلهایی باشه که تو قسمت 3 اسمشون رو نوشتم؟؟؟؟؟
6. میخواستم ببینم محل تغییر یک گزینه رو تو رجیستری چه طوری باید به دست آورد؟؟؟؟؟ مثل همین مورد که شما آدرسش رو تو رجیستری نوشتین.