PDA

View Full Version : سوال: برنامه برداشتن تیک Proxy Server



سيد مجتبي هاشمي
پنج شنبه 10 تیر 1389, 09:56 صبح
دوستان من باید برنامه ای بنویسم که تیک گزینه Proxy Server را در آدرس زیر در صورت وجود بردارد. لطفا راهنمایی کنید که چه طور باید این برنامه رو بنویسم.
این برنامه باید به صورتی باشه که پس از اجرا هر زمان که آن گزینه تیک دار شد تیک آن را بردارد.

پس از اتصال به اینترنت بعضی مواقع گزینه زیر در Internet Explorer تیک دار میشود.
پس از باز کزدن Internet Explorer :
1. منوی Tools
2. گزینه Internet Option
3. سربرگ Connections
4. دکمه های Settings یا LAN Settings
5. در قسمت Proxy Server تیک عبارت زیر در صورت وجود برداشته شود.



Use a proxy server for your LAN
و
Use a proxy server for this connection


دوستان در صورتی که این سوال مربوط به این قسمت نیست بهم بگین چون پس از تغییر محل ایجاد تاپیک جدید این اولین تاپیکی است که ارسال میکنم.

Felony
پنج شنبه 10 تیر 1389, 11:39 صبح
میتونید به ترتیب هندل ها رو به دست بیارید و پنجره ها رو باز کنید و ... ولی این کار از لحاظ فنی درست نیست .

با یک برنامه Monitor سیستم رو مانیتور کنید ببینید وقتی اون تیک زده میشه کجا ( رجیستری یا ... ) تغییر میکنه و بعد خودتون با برنامتون شبیه سازیش کنید .

سيد مجتبي هاشمي
پنج شنبه 10 تیر 1389, 20:19 عصر
میتونید به ترتیب هندل ها رو به دست بیارید و پنجره ها رو باز کنید و ... ولی این کار از لحاظ فنی درست نیست .

این هندلها چی هستند و از کجا باید گیرشون بیارم؟ میتونید یه نمونه کدش رو بذارین؟
چرا این کار درست نیست؟



با یک برنامه Monitor سیستم رو مانیتور کنید ببینید وقتی اون تیک زده میشه کجا ( رجیستری یا ... ) تغییر میکنه و بعد خودتون با برنامتون شبیه سازیش کنید

ببخشید متوجه منظورتون نشدم میشه بیشتر توضیح بدین که منظورتون از مانیتور کردن چیه؟

Felony
پنج شنبه 10 تیر 1389, 20:25 عصر
این هندلها چی هستند و از کجا باید گیرشون بیارم؟ میتونید یه نمونه کدش رو بذارین؟
چرا این کار درست نیست؟

در ویندوز هر شئ ویژوال برای خودش یک شماره خاص داره ( مثل ID ) که بهش هندل میگن چون میتونی به وسیله اون به شئ دسترسی پیدا کنی ، این شماره ها منحصر به فرد هستن و هیچ 2 شماره ای یکسان نیستند ، در هر بار راه اندازی برنامه یا راه اندازی مجدد سیستم عامل هندل ها تغیر میکنن ، مثلا ممکنه هندل دکمه Start الان 14525 باشه و بعد از راه اندازی بشه 59525 پس این هندل ها ثابت نیستن ، برای به دست آوردن هندل یک شئ از توابع FindWindow و FindWindowEX استفاده میشه ، این توابع نام کلاس والد و عنوان یک کنترل رو میگیرن و هندل جاری اون کنترل رو برات برمیگردونن که میتونید در موردشون تحقیق کنید .

حالا با داشتن هندل مثلا منوی Tools میتونید پیغام کلیک رو بهش بفرستید تا این منو باز بشه و تا آخر ...

فکر میکنم دلیل غیر فنی بودنش رو هم با توجه به توضیحات بالا فهمیده باشی .

majid2230
جمعه 11 تیر 1389, 06:59 صبح
در رجیستری در
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Inter net Settings]
مقدار key زیر رو برای فعال کردن پروکسی به 1 یا برای غیر فعال کردن اون به 0 تغییر بدید ، بقیه تنظیمات مربوط به پروکسی و کانکشن هم در همین شاخه است .
ProxyEnable

سيد مجتبي هاشمي
جمعه 11 تیر 1389, 11:52 صبح
در ویندوز هر شئ ویژوال برای خودش یک شماره خاص داره ( مثل ID ) که بهش هندل میگن چون میتونی به وسیله اون به شئ دسترسی پیدا کنی ، این شماره ها منحصر به فرد هستن و هیچ 2 شماره ای یکسان نیستند ، در هر بار راه اندازی برنامه یا راه اندازی مجدد سیستم عامل هندل ها تغیر میکنن ، مثلا ممکنه هندل دکمه Start الان 14525 باشه و بعد از راه اندازی بشه 59525 پس این هندل ها ثابت نیستن ، برای به دست آوردن هندل یک شئ از توابع FindWindow و FindWindowEX استفاده میشه ، این توابع نام کلاس والد و عنوان یک کنترل رو میگیرن و هندل جاری اون کنترل رو برات برمیگردونن که میتونید در موردشون تحقیق کنید .

حالا با داشتن هندل مثلا منوی Tools میتونید پیغام کلیک رو بهش بفرستید تا این منو باز بشه و تا آخر ...

فکر میکنم دلیل غیر فنی بودنش رو هم با توجه به توضیحات بالا فهمیده باشی .

آقای تاجیک ممنون از توضیحاتتون. اگه ممکن هست مانیتور کردن رو هم توضیح بدین.

سيد مجتبي هاشمي
جمعه 11 تیر 1389, 11:54 صبح
در رجیستری در
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Inter net Settings]
مقدار key زیر رو برای فعال کردن پروکسی به 1 یا برای غیر فعال کردن اون به 0 تغییر بدید ، بقیه تنظیمات مربوط به پروکسی و کانکشن هم در همین شاخه است .
ProxyEnable

ممنون از راهنماییتون. من تا حالا برنامه ای که با رجیستری کار بکنه ننوشتم، میشه بگین کدش رو چه طور باید بنویسم. شما نمونه کدی دارین که بتونه بهم کمک بکنه؟

majid2230
جمعه 11 تیر 1389, 16:49 عصر
این یه نمونه کد هست که یادم نیست از کجا گرفتم ، برای خواندن از و نوشتن در رجیستری هست .

سيد مجتبي هاشمي
جمعه 11 تیر 1389, 17:56 عصر
ممنون. ببخشید در Edit های برنامه باید چی وارد کنم؟
عدد، رشته، یک مسیر در رجیستری یا .....

majid2230
جمعه 11 تیر 1389, 22:00 عصر
تابع
SetRegistryData
که در کد برای نوشتن دیتا در رجیستری استفاده شده پارامترهای زیر رو به عنوان ورودی می گیره
RootKey: HKEY :برای کد شما باید با HKEY_CURRENT_USER مقدار دهی شود.
Key string : که باید با \Software\Microsoft\Windows\CurrentVersion\Interne t Settings مقدار دهی شود .
Value string : که باید با ProxyEnable مقدار دهی شود .
RegDataType: TRegDataType : نوع داده است که شما چون مقدارمورد استفاده تون DWORD است با از نوع عدد یعنی rdInteger استفاده کنید .
Data: variant : مقدار کی هست که برای فعال سازی باید 1 و برای غیر فعال کردن 0 مقدار دهی شود .
که این ورودی ها در کد وارد شده ولی اون مقادیر برای غیر فعال کردن UAC هست که شما باید کد رو به صورتی که در بالا گفتم عوض کنید بعد از اینکه مقادیر root و key و value و Regdatatype در کد عوض کردید مقدار data رو می تونید تو ادیت وارد کنید (0 یا 1)

سيد مجتبي هاشمي
شنبه 19 تیر 1389, 23:53 عصر
آقای تاجیک از کدتون استفاده کردم. ممنون از کمکتون.
اما چندتا مشکل داشتم اگه ممکنه لطف کنید و جوابشون رو بدین.

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. میخواستم ببینم محل تغییر یک گزینه رو تو رجیستری چه طوری باید به دست آورد؟؟؟؟؟ مثل همین مورد که شما آدرسش رو تو رجیستری نوشتین.

Felony
دوشنبه 21 تیر 1389, 02:30 صبح
آقای تاجیک از کدتون استفاده کردم. ممنون از کمکتون.
من کدی قرار نداده بودم !


1. وقتی که برنامه رو میخوام تو دلفی 7 باز کنم پیام خطایی میده که تو عکس مشخصه.
از متن پیغام که مشخصه ، در دلفی 7 کنترل BitButton خصیصه DoubleBuffered نداره و این پیغام خطا صادر میشه که خودتون میتونید دستی خذفش کنید .


3. فایلهای زیر چی هستن و کاربردشون چیه؟ آیا بدون این فایلها برنامه اجرا میشه؟
اینها فایل هایی هستن که خود دلفی 2010 موقع ذخیره پروژه میسازه ، اون فایل Clean.bat دستی نوشته شده ، با اجرای اون فایل ، فایلهای اضافه که خود دلفی میسازه حذف میشن .


4. وقتی فایل اجرایی برنامه ساخته میشه نام شما به صورت کم رنگ زیر این فایل نوشته میشه، میخواستم ببینم این کار رو چه طور انجام دادین؟؟؟ و آیا میشه اون متن نوشته شده رو تغییر داد یا نه؟؟؟؟
منوی : Project -> Option -> VerssionInfo


5. وقتی کد بالا رو تو رویداد On Show یک فرم نوشتم و خواستم برنامه رو اجرا کنم تعداد زیادی پیام خطا داد. البته اون دو تا تابع رو هم نوشته بودم. ممکنه این خطاها از نبود فایلهایی باشه که تو قسمت 3 اسمشون رو نوشتم؟؟؟؟؟
خیر ، ربطی به اون فایل ها نداره .


6. میخواستم ببینم محل تغییر یک گزینه رو تو رجیستری چه طوری باید به دست آورد؟؟؟؟؟ مثل همین مورد که شما آدرسش رو تو رجیستری نوشتین.
با برنامه های مانیتورینگ ، قبلا زیاد در موردش بحث شده .

سيد مجتبي هاشمي
سه شنبه 22 تیر 1389, 15:51 عصر
این یه نمونه کد هست که یادم نیست از کجا گرفتم ، برای خواندن از و نوشتن در رجیستری هست .
با تشکر از آقای تاجیک به خاطر جوابشون و آقای majid2230 (http://www.barnamenevis.org/forum/member.php?u=123923) به خاطر نمونه برنامه ای که گذاشته بودن. در ضمن من در پست قبلی به جای آقای majid2230 (http://www.barnamenevis.org/forum/member.php?u=123923) اسم آقای تاجیک رو نوشتم. با عرض معذرت.

سوالی داشتم که هر کدوم از دوستان بتونن جواب بدن ممنون میشم.
در مورد مانیتورینگ تو سایت خیلی جستجو کردم اما چند مورد بیشتر پیدا نشد که اونها هم به دردم نخورد.
اگه میشه در مورد مانیتورینگ یه توضیح کامل بدین که چی هست؟ چی کار میکنه؟ و چه طوری باید باهاش کار کرد؟ مثلا برای همین برنامه چه طور میتونم آدرس اون محل رو تو رجیستری به دست بیارم؟؟؟؟
Tools --> Internet Option --> Connection --> Settings --> Proxy Server

Felony
چهارشنبه 23 تیر 1389, 19:11 عصر
اگه میشه در مورد مانیتورینگ یه توضیح کامل بدین که چی هست؟ چی کار میکنه؟
مانیتورینگ به معنای زیر نظر گرفتن رفتار ها و عملیات های در حال وقوع در سیستم عامل .


مثلا برای همین برنامه چه طور میتونم آدرس اون محل رو تو رجیستری به دست بیارم؟؟؟؟
رجیستری رو مانیتور میکنید و بعد یک بار اون تیک رو به صورت دستی تغییر میدید ، کلیدی که در رجیستری تغییر پیدا میکنه کلید مورد نظر شما هست ، البته در بیشتر مواقع با انجام یک عمل تعداد زیادی کلید و ... در سیستم تغییر میکنه که به هم وابستن و باید بررسی کنید کدوم کلید ها تغییر کردن .

سيد مجتبي هاشمي
چهارشنبه 23 تیر 1389, 22:23 عصر
رجیستری رو مانیتور میکنید و بعد یک بار اون تیک رو به صورت دستی تغییر میدید ، کلیدی که در رجیستری تغییر پیدا میکنه کلید مورد نظر شما هست.

با تشکر از شما.
میشه بفرمایین چه طور میتونم رجیستری رو مانیتور کنم؟ با چه برنامه ای؟ چه طوری؟
لطفا اگه نرم افزار خاصی نیاز داره معرفی کنید یا لینک دانلودش رو قرار بدین.
باز هم ممنون.

Felony
چهارشنبه 23 تیر 1389, 23:51 عصر
به وبسایت www.sysinternals.com مراجعه کنید ، ابزار هایی برای مانیتورینگ داره .

سيد مجتبي هاشمي
جمعه 25 تیر 1389, 15:44 عصر
آقای تاجیک یه برنامه به نام Active Registry Monitor پیدا کردم اما هر چه کردم نتونستم باهاش کار مورد نظر رو انجام بدم. لطف میکنید در مورد این برنامه و نحوه کار کردن باهاش توضیح بدین؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

سيد مجتبي هاشمي
یک شنبه 07 آذر 1389, 09:32 صبح
با سلام.
دوستان این مدت که نبودم در مورد مانیتور کردن رجیستری خیلی جستجو کردم اما موفق نشدم و مسیر مورد نظرم رو نتونستم توی رجیستری پیدا کنم. اگه گسی از دوستان میتونه بهم کمک کنه تا محل مسیر زیر رو تو رجیستری پیدا کنم. ممنون.

میخواهم پس از باز کردن اینترنت اکسپلورر تیک موجود در مسیر زیر را بردارم. دنبال محلش تو رجیستری میگردم.


Tools --> Internet Option --> Connection --> Settings --> Proxy Server

amirb55
پنج شنبه 30 دی 1389, 18:22 عصر
سلام
آیا میشه یک کلید(ترکیب کلیدی) در ویندوز داشته باشیم که با زدنش این کلید پروکسی 1 بشود و وقتی دوباره زدیم 0 بشود !؟
اگر نمیشه یک کلید برای این کار تعریف کرد آیا میشود یه برنامه مثل بچ فایلهای داس درست کرد که با اجراش این اتفاق بیوفته؟!

Mask
پنج شنبه 30 دی 1389, 20:10 عصر
فایل 1.bat رو اگه اجرا کنید تیک پروکسی سرور فعال میشه و اگه 0.bat رو اجرا کنید غیرفعال میشه.

سيد مجتبي هاشمي
شنبه 02 بهمن 1389, 11:33 صبح
فایل 1.bat رو اگه اجرا کنید تیک پروکسی سرور فعال میشه و اگه 0.bat رو اجرا کنید غیرفعال میشه.

ممنون از برنامه ای که قرار داده بودین. اما این فایل همون کار برنامه ای رو انجام میده که من تو پست 11 قرار داده بودم. میخوام آدرس جایی تو رجیستری رو بهم بدین که تیک مربوط به گزینه زیر رو برداره.


Tools --> Internet Option --> Connection --> Settings --> Proxy Server

amirb55
شنبه 02 بهمن 1389, 15:43 عصر
فایل 1.bat رو اگه اجرا کنید تیک پروکسی سرور فعال میشه و اگه 0.bat رو اجرا کنید غیرفعال میشه.

ممنون از محبت شما

mat1368
شنبه 02 بهمن 1389, 17:38 عصر
برای غیر فعال کردن به key
Proxyenable
در مسیر زیر مقدار 0 بدید و برای فعال کردن مقدار 1
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Internet Settings]

اگه توی کدی که قبلا قرار داده بودم و الان تو صفحه قبل هست این مسیر اومده .

سيد مجتبي هاشمي
چهارشنبه 05 مرداد 1390, 09:53 صبح
اگه توی کدی که قبلا قرار داده بودم و الان تو صفحه قبل هست این مسیر اومده .

ببخشید شما توی صفحه قبل کدی قرار ندادین. در ضمن این که شما گفتین رو من انجام دادم اما فقط تیک گزینه LAN Settings رو بر میداره ولی من میخوام تیک مر بوط به پروکسی موجود در آدرس زیر برداشته بشه.
Tools --> Internet Option --> Connection --> Settings --> Proxy Server

یعنی اول کانکشن مورد نظر رو انتخاب کنیم سپس تیک پروکسی اون کانکشن رو برداریم.