برگزیده های پرشین تولز

NetCounter كنتور اينترنتي (نمايشگر مصرف اينترنت كنار ساعت كامپيوتر)

من از نت كنتور استفاده مي كنم و آن را به ديگران هم...

  • توصيه مي كنم

    Votes: 5 71.4%
  • توصيه نمي كنم

    Votes: 2 28.6%

  • Total voters
    7

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
,ويرايش: نسخه جديد اين نرم افزار در پست 6
سلام

از بس دنبال كنتور رايگان جهت نظارت بر مصرف اشتراك هاي اينترنتم گشتم و پيدا نشد، تصميم گرفتم طرز ساختن اونها رو ياد گرفته و شخصاً يكي درست كنم. بالاخره، اين كار امكان پذير شد. شما هم ميتونيد ضمن استفاده از اين برنامه كه ظرف 30 ثانيه نصب ميشه ، امكانات مورد نياز شخصيتون رو ذكر كنيد تا در نسخه هاي بعدي تعبيه كنيم.



نسخه فعلي: NetCounter 1.0
ويژگي ها:
1- نمايش مدت اتصال (بر حسب دقيقه) كنار ساعت كامپيوتر
2- تشخيص خودكار قطع و وصل اينترنت
3- محاسبه كل مصرف هر يك از اشتراك ها
4- محاسبه كل استفاده هر يك از كاربران
5- محاسبه ميانگين مصرف (در هر روز، در هر ماه، در هر بار اتصال)
6- محاسبه ميانگين سرعت هر يك از كانكشن ها
7- ثبت و نمايش ساعت، تاريخ و مدت زمان دقيق تمام اتصال ها
8- و...

جالب اينجاست كه اين برنامه حجم بسيار كمي از رم (فقط 32 KB) و سي پي يو (تقريباً 0%) را به خود اختصاص مي دهد كه به هيچ وجه باعث كاهش سرعت سيستم نخواهد شد. در عين حال، هر زمان بخواهيد مي توانيد آن را Uninstall كنيد.

نكته مهم:
1- پس از دانلود، فايل "Setup.pdf" را به "Setup.exe" تغيير نام داده و نصب كنيد.
2- در آخرين مرحله نصب، گزينه "Launch Program" را فعال نگاه داشته، Finish را بزنيد. چند لحظه بعد صفحه جديدي ظاهر مي شود كه در آن صفحه گزينه Install را بزنيد تا نصب پايان يابد.
3- امكانات كامل برنامه، بعد از اولين ريستارت سيستم فعال خواهند شد.
 

فایل های ضمیمه

  • Setup.pdf
    1.5 MB · نمایش ها: 736

nsh

Registered User
تاریخ عضویت
19 ژانویه 2006
نوشته‌ها
685
لایک‌ها
4
محل سکونت
i & j : 2 & 3
ایول به نظر خیلی جالب میاد
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
نسخه جديد

سلام

اين هم NetCounter 1.0.0.6 كه نسبت به نسخه قبلي (1.0) يكي از حفره (Bug) هاي آن كه باعث Error هاي نا بهنگام مي شد، برطرف شده.

روش نصب، مشابه قبلي است. يعني فايل Setup.pdf را به Setup.exe تغيير نام داده و نصب مي كنيد. در مرحله آخر نصب هم گزينه Launch program را فعال بگذاريد.

فراموش نكنيد كه براي اجرا شدن تمام برنامه هاي نوشته شده با زبان هاي زيرمجمعه ويژوال استوديو دات نت بايد نرم افزار dotnet Framework روي سيستم نصب باشد. (اگه خواستيد لينك دانلود بدم)

نكته:
قبل از نصب نسخه جديد، لازم است نسخه قبلي (در صورت وجود) Uninstall شود. (از طريق Control Panel> Add or Remove programs)
 

فایل های ضمیمه

  • setup.pdf
    1.8 MB · نمایش ها: 315

tkavosh

Registered User
تاریخ عضویت
24 مارس 2005
نوشته‌ها
736
لایک‌ها
71
محل سکونت
مشهد
با سپاس از برنامه .
این برنامه را با چه زبانی نوشتید؟
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
NetCounter 2007 (فارسي)

تذكر: اين نسخه، هر گونه كانكشن حقيقي يا مجازي شبكه را به عنوان «اينترنت» فرض مي كند.
سلام
به خاطر مشكلاتي كه در نسخه قبلي داشتيم و باعث كمي تاخير در استارتاپ ويندوز مي شد، نسخه جديد رو با امكانات بيشتر و در عين حال بسيار سبك تر و سريع تر طراحي كردم طوري كه:

منابع سيستم:
اشغال رم: 19 MB
‍اشغال سي پي يو: 0%
سرعت لود شدن: كمتر از 1 ثانيه




يك امكان جالب كه اين يكي نسبت به قبلي داره، امكان اتصال از طريق خود برنامه و ديگري محاسبه مدت زمان اتصال ها بر اساس نام كاربري كانكشن به جاي نام كانكشن هست (اگه يه كارت جديد از همون شركت قبلي بخريم، مدت اون جداگانه محاسبه مي شه).

ديگر امكانات:
1- (مثل نسخه قبل) محاسبه متوسط مصرف روزانه، ماهانه و متوسط هر اتصال

2- محاسبه مصرف روزانه و شبانه به طور مجزا طبق تنظيم ساعات نيم بهاي شبانه (با روز و شب تقويمي اشتباه گرفته نشه)


3- نمايش كل كاركرد هر كاربر ويندوز و كل استفاده هر كاربر از هر كارت اينترنت


4- تشخيص خودكار اتصال و قطع شدن اينترنت و نمايش مدت اتصال، كنار ساعت كامپيوتر با دقت زياد


5- در صورتي كه بيش از 1 ويندوز روي سيستم داريد، توي ويندوز دوم، نيازي به نصب مجدد برنامه نيست. كافيه ميانبر فايل اجرايي اون رو به استارتاپ ويندوز دوم اضافه كنيد تا از بانك داده مشترك براي محاسبه كانكشن هاي هر دو ويندزو و جمع كردن اونها با هم براي محاسبه دقيق تر استفاده كنه. (فقط با ويستا سازگار نيست)

6- ثبت و محاسبه سرعت متوسط كانكشن ها و سرعت متوسط دانلود



لينك دانلود (735 كيبوبايت)

پيش نياز:
.Net Framework 2
(در زمان نصب خود به خود چك ميشه)


تذكر مهم:
1- امنيت اين نرم افزارها رو شخصاً تضمين مي كنم. (اينجا، خيلي ها من رو مي شناسند)
2- محاسبه زمان اتصال شبانه، بر اساس تنظيم ساعت نيم بها هست و اگر تنظيم نكنيد، به طور پيشفرض از ساعت 1 شب تا 7 صبح حساب ميشه.
3- محاسبه سرعت دانلود، با دانلود يك فايل بسيار كوچك از اينترنت انجام ميشه. دقت اين محاسبه زياد نيست ولي دانستن اين عدد هم خالي از لطف نيست.
 

R E Z A

کاربر تازه وارد
تاریخ عضویت
27 فوریه 2007
نوشته‌ها
1,266
لایک‌ها
1
محل سکونت
TeHrAn
جواد جان ممنون از زحمتی که کشیدی منتها من فایلی رو که دانلود کردم وقتی پسوندش رو به exe. تغییر میدم هیچ تغییری تو فایل PDF ایجاد نمیشه.
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
جواد جان ممنون از زحمتی که کشیدی منتها من فایلی رو که دانلود کردم وقتی پسوندش رو به exe. تغییر میدم هیچ تغییری تو فایل PDF ایجاد نمیشه.
رضاجان، اون PDF رو كه به exe تبديل كني، وقتي روش دوبار كليك مي كني، بايد اجرا بشه. فكر نمي كنم مشكلي از اين بابت باشه. ولي شما چرا نسخه قديمي رو دانلود مي كني. اين نسخه جديد رو كه تو پست 6 لينك دادم دانلود كن. پسوندش Rar هست. كافيه اون رو Unrar كني و فايل Setup رو اجرا كني.

مشكلي بود بگو.
 

igimax

کاربر فعال کامپیوتر
تاریخ عضویت
17 سپتامبر 2004
نوشته‌ها
3,410
لایک‌ها
1,348
سن
49
سلام جواد جان
animsmilysmile.gif


. چند روز پيش به خاطر پست جديدي كه در تاپيك "راهنماي تبديل تاريخ هاي شمسي، ..." داديد و به آنجا سري زدم متوجه لينك‌هاي برنامه در امضا‌شما شدم وقتي نگاه كردم ديدم همه كار شماست. ايــــــــــــــول
113.gif


. يكي از آن برنامه‌ها توجه‌ام را جلب كرد، اونم برنامه‌ اين تاپيك بود. علتش هم اين بود كه برنامه‌اي مشابه اين را خيلي وقت پيش (سال 2000) نوشته بودم. برام جالب بود ببينم همون مشكلاتي كه روزهاي اول من هم با اين برنامه داشتم آيا شما داريد يا آنها را حل نموديد.

. متاسفانه اولين مشكل يعني "تشخيص دسترسي داشتن به اينترنت" و در پي آن "ارتباط از طريق چه كانكشن يا وسيله‌اي" و در پي آن "چه نوع ارتباطي" وجود داشت. دو مورد 2 و 3 شايد مهم نباشد، اما مورد 1 ، اگر به درستي اجرا نشود باعث اختلال در كار برنامه و در نتيجه اشتباه تشخيص دادن "دسترسي به اينترنت" مي‌شود.

. مشكل برنامه در اين است كه اگر يك كانكشن LAN موجود باشد، برنامه شما آن را به عنوان يك كانكشن اينترنتي فرض مي‌كند. به مجرد اينكه برنامه شما را اجرا كردم گفت: "شما از طريق كارت DVB به اينترنت وصل شده‌ايد!!!!" نمي‌دانم از چه روشي براي تشخيص كانكشن استفاده نموديد اما زماني كه آمدم كارت DVB را Disable كنم، با پيغام خطا "اين كار ممكن نيست چون برنامه‌اي به آن دسترسي دارد" مواجه شدم. حتا با خروج از برنامه شما هم اين مشكل حل نشد. مجبور به Reset شدم و اينبار با LAN اين موضوع را تست كردم باز هم همان اشكال ايجاد شد. باز هم امكان Disable كردن نبود!!

. چون در اين زمينه 2 برنامه نوشته بودم و تجربه داشتم گفتم اولين راهنما در زمينه برنامه نويسي را به اين موضوع تخصيص دهم اما چون گرفتار نوشتن 2 راهنما توامن هستم گفتم به شكل خلاصه به شما اين نكته را عرض كنم و چون در برنامه نويسي حرفه‌اي هستيد، زياد نياز به توضيح نخواهد بود:

. اول اين نكته را بگويم اصطلاح "تشخيص دسترسي داشتن به اينترنت" خودش كلي حرف و حديث دارد، به طوري كه زماني كه داشتم در مورد اين موضوع تحقيق مي‌كرم، در يكي از سايت‌هاي انگليسي جمله فوق باعث بوجود آمدن يك بحث فلسفي!!!! شده بود كه اصلن جمله "ارتباط يا دسترسي به اينترنت داشتن" چه معني دارد و درست هست يا نه!! اما روش كد نويسي پيشنهادي من:

يك نكته: (كليه لينك‌ها از MSDN همراه Visual Stedio 2005 هستند. احتمالن داري ديگه!؟ با كپي كرد آنها در آدرس بار MSDN به اصل مطلب مي‌رسيد. پس هيچ لينكي از اينترنت نيست اما در MSDN كه Online هست در سايت مايكروسافت بيابيد. در ضمن توابع API چون در Platform SDK هست بايد آن را نيز در MSDN نصب نموده باشيد.)

. متاسفانه و خوشبختانه!!! در VS.هاهميشه چندين راه براي انجام يك كار موجود است!! اما نتيجه تحقيقات من دو تابع API بود كه از زير خانواده توابع WinINet مي‌باشند و مي‌توانند به ما در اين زمينه كمك كنند. فايل WinINet.dl تقريبن براي انجام تمامي امور شبكه و اينترنت تابع دارد.(ليست اين توابه در لينك فوق كه به MSDN هست موجود است). اما اولين تابع مورد نياز ما به دوشكل موجود است، به نام‌هاي:
1) InternetGetConnectedState ه
2) InternetGetConnectedStateEx ه

. اگر با توابع API آشنايي داشته باشيد مي‌دانيد كه پسوند "Ex" به معني پارامترهاي بيشتر داشتن (امكانات بيشتر داشتن) يك تابع نسبت به هم نام خود و بدون اين پسوند مي‌باشد. پس من هم همان تابع دوم را توضيح مي‌دهم.

. تابع InternetGetConnectedStateEx امكان تشخيص Connection را دارد. مثل كانكشن LAN يا Modem يا Proxy و ... اما امكان تشخيص اينكه "آيا امكان دسترسي به اينترنت از طريق اين كانكشن وجود دارد يا نه؟" را ندارد . براي حل اين مشكل يك كلك مرغابي وجود دارد كه اكثر برنامه‌هاي خفن هم از آن استفاده مي‌كنند، Ping كردن يك سايت يا IP در اينترنت. اگر جواب Ping آمد پس ما به اينترنت دسترسي داريم. اين روش اشكالات خاص خودش را دارد كه در اين مطلب خلاصه آن را فاكتر مي‌گيرم.

. تابع دوم براي تشخيص دسترسي داشتن به اينترنت تابعي از همان فايل WinINet.dll هست با نام:
1) InternetCheckConnection ه

. با مشخص كردن آدرس يك سايت در تابع InternetCheckConnection، اين تابع در صورتي كه امكان دسترسي به سايتي كه آدرس آن را به اين تابع ارسال نموديم، امكان پذير باشد، مقدار True را باز مي‌گرداند. من نمي‌دانم شما از VB استفاده مي‌كنيد يا C اما در زير توضيحات توابع فوق در كد نويسي VB را نوشته‌ام و در انتها كد Classي كه براي يكي از برنامه‌هام نوشته بودم را براي تكميل توضيحات‌ام براي شما قرار داده‌ام.

. Syntax تابع InternetGetConnectedStateEx و تعريف آن در VB به شكل زير است:

کد:
 Syntax=
BOOL InternetGetConnectedStateEx(
  LPDWORD lpdwFlags,
  LPTSTR lpszConnectionName,
  DWORD dwNameLen,
  DWORD dwReserved
);
کد:
VB Define=
    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" Alias "InternetGetConnectedStateExA" _
      (ByRef lpdwFlags As Long, _
       ByVal lpszConnectionName As String, _
       ByVal dwNameLen As Long, ByVal dwReserved As Long) As Boolean
. خود تابع اگر Connectionي را بيابد مقدار True را باز مي‌گرداند و پارامتر اول آن Type كاننكشن را باز مي‌گرداند. بقيه پارامترها را خودتان زحمت مطالعه‌شان را بكشيد. اما مقدار تعدادي از كانكشن‌ها را بايد در يك متغيير Enum به شكل زير معرفي نماييد:

کد:
    ''''''''''''CONSTANT's'''''''''''''''
    Private Enum ConFlags
        '  Connection VIA Proxy server.
        Proxy = &H4S
        '  Modem is busy.
        ModemIsBusy = &H8S
        '  Internet connection is currently Offline
        Offline = &H20S
        '  Internet connection is currently configured
        ConnectionIsConfigured = &H40S
        '  Internet connection VIA Modem.
        Modem = &H1S
        '  Remote Access Server is installed.
        RasInstalled = &H10S
        '  Internet connection VIA LAN.
        LAN = &H2S
    End Enum

    Public Enum ConType
        AnyConnection
        Modem
        LAN
        RasInstalled
        Proxy
        InternetOffline
        ConnectionConfigured
    End Enum
. استفاده مستقيم از تابع فوق فقط براي تشخيص اينكه آيا Connectionي وجود دارد يا نه؟ به شكل زير است:

کد:
Dim Status As Boolean    
        Status = InternetGetConnectedStateEx(CntType, CntName, CntNameLen, 0)
. اما براي تشخيص Connection Type مي‌توان از تابع فوق در در دل تابع ديگري استفاده نمود. به طور خلاصه به شكل زير:


کد:
Public Function IsConnected(ByVal ConnectionType As ConType) As Boolean

        Dim Status As Boolean
        Dim CntType As Long
        Dim CntName As String = Space(50)
        Dim CntNameLen As Long = 50
        
        Status = InternetGetConnectedStateEx(CntType, CntName, CntNameLen, 0)

        Select Case ConnectionType

                ' MODEM
            Case Is = ConType.Modem
                Return CBool(CntType And ConFlags.Modem And CLng(Status))

                ' LAN
            Case Is = ConType.LAN
                Return CBool(CntType And ConFlags.LAN And CLng(Status))

                ...
                ...
                ...

        End Select
End Function
. تا اينجا برنامه ما تشخيص وجود يك Connection را داده است. اما آيا دسترسي به اينترنت از طريق اين كانكشن(يا كانكشن‌ها) امكان پذير هست؟ از تابع InternetCheckConnection به شكل مستقيم و يا در درون تابعي مي‌شود از آن استفاده نمود:

کد:
Syntax=
BOOL InternetCheckConnection(
  LPCTSTR lpszUrl,
  DWORD dwFlags,
  DWORD dwReserved
);
. تعريف آن در VB به شكل:

کد:
VD Define=
    Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" _
       (ByVal lpszUrl As String, _
        ByVal dwFlags As Integer, _
        ByVal dwReserved As Integer) As Boolean

    'If this flag is set, it forces a connection
    Private Const FLAG_ICC_FORCE_CONNECTION As Integer = &H1
. روش استفاده از اين تابع براي تشخيص دسترسي داشتن به اينترنت:

کد:
    ' check an URL to find out it can Access.
    Public Function CheckURL(ByVal TestUrl As String) As Boolean
        Return InternetCheckConnection(TestUrl, FLAG_ICC_FORCE_CONNECTION, 0)
    End Function
. براي اطمينان بهتره آدرس سايتي را چك كني كه سرور خفن و Sub Domain زياد دارد، (اگر اين اصطلاح آخري را درست استفاده كرده‌ باشم!) مانند www.Download.com يا www.google.com و ...

. اميدوارم كه مطالب فوق مفيد واقع شود. احتمالن ازAPI مناسب براي Dialup استفاده نموديد اما كلاس Dialup برنامه خود را در لينك دونلود آورده‌ام.

. نكته آخر:
نوشته ای از R E Z A
جواد جان ممنون از زحمتی که کشیدی منتها من فایلی رو که دانلود کردم وقتی پسوندش رو به exe. تغییر میدم هیچ تغییری تو فایل PDF ایجاد نمیشه.
. جواد جان، اي عزيز جان برادر! چرا به جاي به روزرساني پست اول، نكات جديد را در پستهاي وسط تاپيكت مي‌چاپي!!! و همه را سر گردان مي‌كني! اي كاشك من هم پشت كار شما را در نوشتن برنامه‌ها و مطالب در فروم را داشتم، آن وقت تعداد مطالب من هم زايد مي‌شد نه اينقدر كم. كارت درسته ادامه بده ...

توجه: (درون فايل Zip دو كلاس به شكل Text قرار دارد. كلاس CIC كه حاوي توابع WinINet هست و براي تشخيص نوع و نام كانكشن و ارتباط داشتن/نداشتن با اينترنت مفيد است. كلاس Dialup كه براي شماره گيري و قطع ارتباط هست.)

موفق باشيد.
67.gif


خداحافظ
IgImAx
86/11/21
26.gif
103.gif
 

فایل های ضمیمه

  • Two WinINet Functions .zip
    1.7 KB · نمایش ها: 14
Last edited:

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
سلام جواد جان
1538.gif


. چند روز پيش به خاطر پست جديدي كه در تاپيك "راهنماي تبديل تاريخ هاي شمسي، ..." داديد و به آنجا سري زدم متوجه لينك‌هاي برنامه در امضا‌شما شدم وقتي نگاه كردم ديدم همه كار شماست. ايــــــــــــــول
74.gif


. يكي از آن برنامه‌ها توجه‌ام را جلب كرد، اونم برنامه‌ اين تاپيك بود. علتش هم اين بود كه برنامه‌اي مشابه اين را خيلي وقت پيش (سال 2000) نوشته بودم. برام جالب بود ببينم همون مشكلاتي كه روزهاي اول من هم با اين برنامه داشتم آيا شما داريد يا آنها را حل نموديد.

. متاسفانه اولين مشكل يعني "تشخيص دسترسي داشتن به اينترنت" و در پي آن "ارتباط از طريق چه كانكشن يا وسيله‌اي" و در پي آن "چه نوع ارتباطي" وجود داشت. دو مورد 2 و 3 شايد مهم نباشد، اما مورد 1 ، اگر به درستي اجرا نشود باعث اختلال در كار برنامه و در نتيجه اشتباه تشخيص دادن "دسترسي به اينترنت" مي‌شود.

. مشكل برنامه در اين است كه اگر يك كانكشن LAN موجود باشد، برنامه شما آن را به عنوان يك كانكشن اينترنتي فرض مي‌كند. به مجرد اينكه برنامه شما را اجرا كردم گفت: "شما از طريق كارت DVB به اينترنت وصل شده‌ايد!!!!" نمي‌دانم از چه روشي براي تشخيص كانكشن استفاده نموديد اما زماني كه آمدم كارت DVB را Disable كنم، با پيغام خطا "اين كار ممكن نيست چون برنامه‌اي به آن دسترسي دارد" مواجه شدم. حتا با خروج از برنامه شما هم اين مشكل حل نشد. مجبور به Reset شدم و اينبار با LAN اين موضوع را تست كردم باز هم همان اشكال ايجاد شد. باز هم امكان Disable كردن نبود!!

. چون در اين زمينه 2 برنامه نوشته بودم و تجربه داشتم گفتم اولين راهنما در زمينه برنامه نويسي را به اين موضوع تخصيص دهم اما چون گرفتار نوشتن 2 راهنما توامن هستم گفتم به شكل خلاصه به شما اين نكته را عرض كنم و چون در برنامه نويسي حرفه‌اي هستيد، زياد نياز به توضيح نخواهد بود:

. اول اين نكته را بگويم اصطلاح "تشخيص دسترسي داشتن به اينترنت" خودش كلي حرف و حديث دارد، به طوري كه زماني كه داشتم در مورد اين موضوع تحقيق مي‌كرم، در يكي از سايت‌هاي انگليسي جمله فوق باعث بوجود آمدن يك بحث فلسفي!!!! شده بود كه اصلن جمله "ارتباط يا دسترسي به اينترنت داشتن" چه معني دارد و درست هست يا نه!! اما روش كد نويسي پيشنهادي من:

يك نكته: (كليه لينك‌ها از MSDN همراه Visual Stedio 2005 هستند. احتمالن داري ديگه!؟ با كپي كرد آنها در آدرس بار MSDN به اصل مطلب مي‌رسيد. پس هيچ لينكي از اينترنت نيست اما در MSDN كه Online هست در سايت مايكروسافت بيابيد. در ضمن توابع API چون در Platform SDK هست بايد آن را نيز در MSDN نصب نموده باشيد.)

. متاسفانه و خوشبختانه!!! در VS.هاهميشه چندين راه براي انجام يك كار موجود است!! اما نتيجه تحقيقات من دو تابع API بود كه از زير خانواده توابع WinINet مي‌باشند و مي‌توانند به ما در اين زمينه كمك كنند. فايل WinINet.dl تقريبن براي انجام تمامي امور شبكه و اينترنت تابع دارد.(ليست اين توابه در لينك فوق كه به MSDN هست موجود است). اما اولين تابع مورد نياز ما به دوشكل موجود است، به نام‌هاي:
1) InternetGetConnectedState ه
2) InternetGetConnectedStateEx ه

. اگر با توابع API آشنايي داشته باشيد مي‌دانيد كه پسوند "Ex" به معني پارامترهاي بيشتر داشتن (امكانات بيشتر داشتن) يك تابع نسبت به هم نام خود و بدون اين پسوند مي‌باشد. پس من هم همان تابع دوم را توضيح مي‌دهم.

. تابع InternetGetConnectedStateEx امكان تشخيص Connection را دارد. مثل كانكشن LAN يا Modem يا Proxy و ... اما امكان تشخيص اينكه "آيا امكان دسترسي به اينترنت از طريق اين كانكشن وجود دارد يا نه؟" را ندارد . براي حل اين مشكل يك كلك مرغابي وجود دارد كه اكثر برنامه‌هاي خفن هم از آن استفاده مي‌كنند، Ping كردن يك سايت يا IP در اينترنت. اگر جواب Ping آمد پس ما به اينترنت دسترسي داريم. اين روش اشكالات خاص خودش را دارد كه در اين مطلب خلاصه آن را فاكتر مي‌گيرم.

. تابع دوم براي تشخيص دسترسي داشتن به اينترنت تابعي از همان فايل WinINet.dll هست با نام:
1) InternetCheckConnection ه

. با مشخص كردن آدرس يك سايت در تابع InternetCheckConnection، اين تابع در صورتي كه امكان دسترسي به سايتي كه آدرس آن را به اين تابع ارسال نموديم، امكان پذير باشد، مقدار True را باز مي‌گرداند. من نمي‌دانم شما از VB استفاده مي‌كنيد يا C اما در زير توضيحات توابع فوق در كد نويسي VB را نوشته‌ام و در انتها كد Classي كه براي يكي از برنامه‌هام نوشته بودم را براي تكميل توضيحات‌ام براي شما قرار داده‌ام.

. Syntax تابع InternetGetConnectedStateEx و تعريف آن در VB به شكل زير است:

کد:
 Syntax=
BOOL InternetGetConnectedStateEx(
  LPDWORD lpdwFlags,
  LPTSTR lpszConnectionName,
  DWORD dwNameLen,
  DWORD dwReserved
);
کد:
VB Define=
    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" Alias "InternetGetConnectedStateExA" _
      (ByRef lpdwFlags As Long, _
       ByVal lpszConnectionName As String, _
       ByVal dwNameLen As Long, ByVal dwReserved As Long) As Boolean
. خود تابع اگر Connectionي را بيابد مقدار True را باز مي‌گرداند و پارامتر اول آن Type كاننكشن را باز مي‌گرداند. بقيه پارامترها را خودتان زحمت مطالعه‌شان را بكشيد. اما مقدار تعدادي از كانكشن‌ها را بايد در يك متغيير Enum به شكل زير معرفي نماييد:

کد:
    ''''''''''''CONSTANT's'''''''''''''''
    Private Enum ConFlags
        '  Connection VIA Proxy server.
        Proxy = &H4S
        '  Modem is busy.
        ModemIsBusy = &H8S
        '  Internet connection is currently Offline
        Offline = &H20S
        '  Internet connection is currently configured
        ConnectionIsConfigured = &H40S
        '  Internet connection VIA Modem.
        Modem = &H1S
        '  Remote Access Server is installed.
        RasInstalled = &H10S
        '  Internet connection VIA LAN.
        LAN = &H2S
    End Enum

    Public Enum ConType
        AnyConnection
        Modem
        LAN
        RasInstalled
        Proxy
        InternetOffline
        ConnectionConfigured
    End Enum
. استفاده مستقيم از تابع فوق فقط براي تشخيص اينكه آيا Connectionي وجود دارد يا نه؟ به شكل زير است:

کد:
Dim Status As Boolean    
        Status = InternetGetConnectedStateEx(CntType, CntName, CntNameLen, 0)
. اما براي تشخيص Connection Type مي‌توان از تابع فوق در در دل تابع ديگري استفاده نمود. به طور خلاصه به شكل زير:


کد:
Public Function IsConnected(ByVal ConnectionType As ConType) As Boolean

        Dim Status As Boolean
        Dim CntType As Long
        Dim CntName As String = Space(50)
        Dim CntNameLen As Long = 50
        
        Status = InternetGetConnectedStateEx(CntType, CntName, CntNameLen, 0)

        Select Case ConnectionType

                ' MODEM
            Case Is = ConType.Modem
                Return CBool(CntType And ConFlags.Modem And CLng(Status))

                ' LAN
            Case Is = ConType.LAN
                Return CBool(CntType And ConFlags.LAN And CLng(Status))

                ...
                ...
                ...

        End Select
End Function
. تا اينجا برنامه ما تشخيص وجود يك Connection را داده است. اما آيا دسترسي به اينترنت از طريق اين كانكشن(يا كانكشن‌ها) امكان پذير هست؟ از تابع InternetCheckConnection به شكل مستقيم و يا در درون تابعي مي‌شود از آن استفاده نمود:

کد:
Syntax=
BOOL InternetCheckConnection(
  LPCTSTR lpszUrl,
  DWORD dwFlags,
  DWORD dwReserved
);
. تعريف آن در VB به شكل:

کد:
VD Define=
    Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" _
       (ByVal lpszUrl As String, _
        ByVal dwFlags As Integer, _
        ByVal dwReserved As Integer) As Boolean

    'If this flag is set, it forces a connection
    Private Const FLAG_ICC_FORCE_CONNECTION As Integer = &H1
. روش استفاده از اين تابع براي تشخيص دسترسي داشتن به اينترنت:

کد:
    ' check an URL to find out it can Access.
    Public Function CheckURL(ByVal TestUrl As String) As Boolean
        Return InternetCheckConnection(TestUrl, FLAG_ICC_FORCE_CONNECTION, 0)
    End Function
. براي اطمينان بهتره آدرس سايتي را چك كني كه سرور خفن و Sub Domain زياد دارد، (اگر اين اصطلاح آخري را درست استفاده كرده‌ باشم!) مانند www.Download.com يا www.google.com و ...

. اميدوارم كه مطالب فوق مفيد واقع شود. احتمالن ازAPI مناسب براي Dialup استفاده نموديد اما كلاس Dialup برنامه خود را در لينك دونلود آورده‌ام.

. نكته آخر:
. جواد جان، اي عزيز جان برادر! چرا به جاي به روزرساني پست اول، نكات جديد را در پستهاي وسط تاپيكت مي‌چاپي!!! و همه را سر گردان مي‌كني!
69.gif
38.gif
39.gif
اي كاشك من هم پشت كار شما را در نوشتن برنامه‌ها و مطالب در فروم را داشتم، آن وقت تعداد مطالب من هم زايد مي‌شد نه اينقدر كم. كارت درسته ادامه بده ...
موفق باشيد.

خداحافظ
IgImAx
86/11/21
27653.gif
26650.gif
igi عزيز
مثل هميشه توضيحات، كامل و عالي بود.
در توضيحات برنامه، اضافه كردم كه فقط براي كانكشن هاي دايال آپ
من سه ماهه كه از اين برنامه استفاده مي كنم و مشكل خاصي هم ندارم. اما با ADSL تست نكردم.
متشكرم
 

igimax

کاربر فعال کامپیوتر
تاریخ عضویت
17 سپتامبر 2004
نوشته‌ها
3,410
لایک‌ها
1,348
سن
49
سلام جواد جان
animsmilysmile.gif


در توضيحات برنامه، اضافه كردم كه فقط براي كانكشن هاي دايال آپ
. من هم منظورم از مطالب فوق همين بود، يكي از اهداف برنامه شما تشخيص صحيح كانكشن‌هاي DialUP بوده، اما به اشتباه كانكشن LAN و ... را نيز كه در آنها هيچ ارتباط اينترنتي وجود ندارد را نيز به عنوان كانكشن اينترنتي فرض مي‌كند.
اما با ADSL تست نكردم.
. اتفاقن من هم مثل شما هنوز Dialup دارم! اين كانكشن LAN من هم يك ارتباط شبكه‌اي بين دو كامپيوتر من هست (به شكل Cross Link) و كانكشن دوم من هم كارت DVB هست كه يك رسيور كانل‌هاي ماهواره‌اي هست. كه هيچ يك از دو كانكشن فوق ارتباط اينترنتي را ندارد.

. مطمئنن خواسته يا ناخواسته هدف بالاتر و اصلي شما تشخيص دسترسي به اينترنت بوده و هست. كه از دو تابعي كه معرفي نموده‌ام اين هدف به شكل بهتري قابل دسترسي مي‌باشد. لطفن به عكسي كه در زير گذاشته ام توجه نماييد:


. همانطور كه در شكل مشاهده مي‌نماييد، هر دو كانكشن Network من را هم به عنوان كانكشن اينترنتي فرض كرده. اما از كار با Dialup حرف ندارد. فقط يك نكته ديگر: چرا با اينكه كانكشن من در روز صورت گرفته (يكي در 12:54PM و ديگري در 01:09PM) ولي آنها را درليست در قسمت شبانه گذاشته؟
. يك پيشنهاد هم داشتم، بهتره در پنجره تنظيم ساعت شبانه يك چك مارك اضافه شود با عنوان "بدون ساعت شبانه" (يا چيزي شبيه به اين) كه با انتخاب نام كانكشن‌ها و روشن كردن تيك اين گزينه ساعت شبانه براي آن كانكشن در نظر گرفته نشود. (فكر كنم الان بايد هر دو پارامتر را روي 0 تنظيم كنيم تا اين اتفلق بيافتد)
. يك برنامه كوچك كه آن را با استفاده از Class اولي كه در پست قبلي قرار دادم، نوشته‌ام و در انتهاي اين برنامه قرار داده‌ام. (در پست قبلي يادم رفت بگويم كه دو كلاس در دل آن فايل Text هست. كلاس CIC كه حاوي توابع WinINet هست و كلاس Dialup كه براي شماره گيري هست. اين توضيحات را به پست قبلي اضافه نمودم) برنامه را كه اجرا نماييد 3 كار مي‌كند:
1) نمايش نام وسيله‌اي كه كانكشن شبكه‌اي دارد. (در Frame با نام تابع InternetGetConnectionEx)ه
2) نمايش دسترسي داشتن/نداشتن به اينترنت. (در Frame با نام تابع InternetCheckConnection)ه
3) نمايش نام كانكشن و كد كانكشن. هر دو پارمتر اول و سوم از تابع InternetGetConnectionEx يعني:

Syntax=
BOOL InternetGetConnectedStateEx(
LPDWORD lpdwFlags,
LPTSTR lpszConnectionName,
DWORD dwNameLen,
DWORD dwReserved
);
. براي مثال به شكل زير نگاه فرماييد. در هر دو كامپيوتر شماره يك و دوم من برنامه فوق اجرا شده و چون دو كامپيوتر من با كابل شبكه و از طريق LAN به هم متصل هستند، نام LAN به شكل True تغيير كرده و چون دسترسي اينترنت وجود ندارد پارامتر آن False هست. (برنامه در هردو كامپيوتر همين شكل است):


محيط برنامه در كامپيوتر اول - ارتباط شبكه LAN بين دو كامپيوتر - بدون اينترنت

. اما در شكل‌ بعدي كامپيوتر اول از طريق مودم و به شكل DIALUP به اينترنت وصل شده و كامپيوتر دوم از طريق كابل LAN و كامپيوتر اول به اينترنت وصل مي‌شود:
icccompy1int662.gif
ه
icccompy2int170.gif

كامپيوتر اول - اتصال مستقيم به اينتر نت از طريق مودم Dialup ه كامپيوتر دوم - اتصال به اينترنت از طريق كابل LAN و كامپيوتر دوم

. البته براي تست‌ها شبكه حتمن نيازي به داشتن دو يا ... كامپيوتر به شكل فيزيكي نيست! شما مي‌توانيد با نصب برنامه‌هاي شبيه ساز PC همانند VMWare يا Microsoft Virtual PC ، برنامه‌هاي خود را با شبكه‌هاي اين نوع برنامه‌ها تست نماييد. در كل برنامه بسيار خوبي نوشتيد و با كمي تغييرات فوق العاده مي‌شود. به بخشيد اگر جسارتي پيش آمد...

نكته: (بزرگي حجم برنامه به خاطر آيكنش هست!!!)


موفق باشيد.
67.gif


خداحافظ
IgImAx
86/11/23
26.gif
103.gif
 

فایل های ضمیمه

  • ConnectionInfo.zip
    240.2 KB · نمایش ها: 45
Last edited:

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
سلام جواد جان
1538.gif


. من هم منظورم از مطالب فوق همين بود، يكي از اهداف برنامه شما تشخيص صحيح كانكشن‌هاي DialUP بوده، اما به اشتباه كانكشن LAN و ... را نيز كه در آنها هيچ ارتباط اينترنتي وجود ندارد را نيز به عنوان كانكشن اينترنتي فرض مي‌كند.
. اتفاقن من هم مثل شما هنوز Dialup دارم! اين كانكشن LAN من هم يك ارتباط شبكه‌اي بين دو كامپيوتر من هست (به شكل Cross Link) و كانكشن دوم من هم كارت DVB هست كه يك رسيور كانل‌هاي ماهواره‌اي هست. كه هيچ يك از دو كانكشن فوق ارتباط اينترنتي را ندارد.

. مطمئنن خواسته يا ناخواسته هدف بالاتر و اصلي شما تشخيص دسترسي به اينترنت بوده و هست. كه از دو تابعي كه معرفي نموده‌ام اين هدف به شكل بهتري قابل دسترسي مي‌باشد. لطفن به عكسي كه در زير گذاشته ام توجه نماييد:


. همانطور كه در شكل مشاهده مي‌نماييد، هر دو كانكشن Network من را هم به عنوان كانكشن اينترنتي فرض كرده. اما از كار با Dialup حرف ندارد. فقط يك نكته ديگر: چرا با اينكه كانكشن من در روز صورت گرفته (يكي در 12:54PM و ديگري در 01:09PM) ولي آنها را درليست در قسمت شبانه گذاشته؟
. يك پيشنهاد هم داشتم، بهتره در پنجره تنظيم ساعت شبانه يك چك مارك اضافه شود با عنوان "بدون ساعت شبانه" (يا چيزي شبيه به اين) كه با انتخاب نام كانكشن‌ها و روشن كردن تيك اين گزينه ساعت شبانه براي آن كانكشن در نظر گرفته نشود. (فكر كنم الان بايد هر دو پارامتر را روي 0 تنظيم كنيم تا اين اتفلق بيافتد)
. يك برنامه كوچك كه آن را با استفاده از Class اولي كه در پست قبلي قرار دادم، نوشته‌ام و در انتهاي اين برنامه قرار داده‌ام. (در پست قبلي يادم رفت بگويم كه دو كلاس در دل آن فايل Text هست. كلاس CIC كه حاوي توابع WinINet هست و كلاس Dialup كه براي شماره گيري هست. اين توضيحات را به پست قبلي اضافه نمودم) برنامه را كه اجرا نماييد 3 كار مي‌كند:
1) نمايش نام وسيله‌اي كه كانكشن شبكه‌اي دارد. (در Frame با نام تابع InternetGetConnectionEx)ه
2) نمايش دسترسي داشتن/نداشتن به اينترنت. (در Frame با نام تابع InternetCheckConnection)ه
3) نمايش نام كانكشن و كد كانكشن. هر دو پارمتر اول و سوم از تابع InternetGetConnectionEx يعني:

. براي مثال به شكل زير نگاه فرماييد. در هر دو كامپيوتر شماره يك و دوم من برنامه فوق اجرا شده و چون دو كامپيوتر من با كابل شبكه و از طريق LAN به هم متصل هستند، نام LAN به شكل True تغيير كرده و چون دسترسي اينترنت وجود ندارد پارامتر آن False هست. (برنامه در هردو كامپيوتر همين شكل است):

محيط برنامه در كامپيوتر اول - ارتباط شبكه LAN بين دو كامپيوتر - بدون اينترنت

. اما در شكل‌ بعدي كامپيوتر اول از طريق مودم و به شكل DIALUP به اينترنت وصل شده و كامپيوتر دوم از طريق كابل LAN و كامپيوتر اول به اينترنت وصل مي‌شود:
ه
كامپيوتر اول - اتصال مستقيم به اينتر نت از طريق مودم Dialup ه كامپيوتر دوم - اتصال به اينترنت از طريق كابل LAN و كامپيوتر دوم

. البته براي تست‌ها شبكه حتمن نيازي به داشتن دو يا ... كامپيوتر به شكل فيزيكي نيست! شما مي‌توانيد با نصب برنامه‌هاي شبيه ساز PC همانند VMWare يا Microsoft Virtual PC ، برنامه‌هاي خود را با شبكه‌هاي اين نوع برنامه‌ها تست نماييد. در كل برنامه بسيار خوبي نوشتيد و با كمي تغييرات فوق العاده مي‌شود. به بخشيد اگر جسارتي پيش آمد...

نكته: (بزرگي حجم برنامه به خاطر آيكنش هست!!!)


موفق باشيد.

خداحافظ
IgImAx
86/11/23
27653.gif
26650.gif
آهان! حالا فهميدم چه اتفاقي افتاده و منظور شما چيه.
در واقع، اين برنامه با كانكشن هاي ADSL مشكلي نداره، فقط اشكال اينجاست كه هر نوع «شبكه» را به عنوان «اينترنت» ميشناسه، چون از تابع استاندارد My.NetWork.IsAvailable استفاده كردم (با vb2005).

در مورد اين كه:


چرا با اينكه كانكشن من در روز صورت گرفته (يكي در 12:54PM و ديگري در 01:09PM) ولي آنها را درليست در قسمت شبانه گذاشته؟

در توضيحات برنامه گفتم كه:
2- محاسبه مصرف روزانه و شبانه به طور مجزا طبق تنظيم ساعات نيم بهاي شبانه (با روز و شب تقويمي اشتباه گرفته نشه)

باز هم سپاسگزارم
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
سلام جواد جان
1538.gif


. من هم منظورم از مطالب فوق همين بود، يكي از اهداف برنامه شما تشخيص صحيح كانكشن‌هاي DialUP بوده، اما به اشتباه كانكشن LAN و ... را نيز كه در آنها هيچ ارتباط اينترنتي وجود ندارد را نيز به عنوان كانكشن اينترنتي فرض مي‌كند.
. اتفاقن من هم مثل شما هنوز Dialup دارم! اين كانكشن LAN من هم يك ارتباط شبكه‌اي بين دو كامپيوتر من هست (به شكل Cross Link) و كانكشن دوم من هم كارت DVB هست كه يك رسيور كانل‌هاي ماهواره‌اي هست. كه هيچ يك از دو كانكشن فوق ارتباط اينترنتي را ندارد.

. مطمئنن خواسته يا ناخواسته هدف بالاتر و اصلي شما تشخيص دسترسي به اينترنت بوده و هست. كه از دو تابعي كه معرفي نموده‌ام اين هدف به شكل بهتري قابل دسترسي مي‌باشد. لطفن به عكسي كه در زير گذاشته ام توجه نماييد:


. همانطور كه در شكل مشاهده مي‌نماييد، هر دو كانكشن Network من را هم به عنوان كانكشن اينترنتي فرض كرده. اما از كار با Dialup حرف ندارد. فقط يك نكته ديگر: چرا با اينكه كانكشن من در روز صورت گرفته (يكي در 12:54PM و ديگري در 01:09PM) ولي آنها را درليست در قسمت شبانه گذاشته؟
. يك پيشنهاد هم داشتم، بهتره در پنجره تنظيم ساعت شبانه يك چك مارك اضافه شود با عنوان "بدون ساعت شبانه" (يا چيزي شبيه به اين) كه با انتخاب نام كانكشن‌ها و روشن كردن تيك اين گزينه ساعت شبانه براي آن كانكشن در نظر گرفته نشود. (فكر كنم الان بايد هر دو پارامتر را روي 0 تنظيم كنيم تا اين اتفلق بيافتد)
. يك برنامه كوچك كه آن را با استفاده از Class اولي كه در پست قبلي قرار دادم، نوشته‌ام و در انتهاي اين برنامه قرار داده‌ام. (در پست قبلي يادم رفت بگويم كه دو كلاس در دل آن فايل Text هست. كلاس CIC كه حاوي توابع WinINet هست و كلاس Dialup كه براي شماره گيري هست. اين توضيحات را به پست قبلي اضافه نمودم) برنامه را كه اجرا نماييد 3 كار مي‌كند:
1) نمايش نام وسيله‌اي كه كانكشن شبكه‌اي دارد. (در Frame با نام تابع InternetGetConnectionEx)ه
2) نمايش دسترسي داشتن/نداشتن به اينترنت. (در Frame با نام تابع InternetCheckConnection)ه
3) نمايش نام كانكشن و كد كانكشن. هر دو پارمتر اول و سوم از تابع InternetGetConnectionEx يعني:

. براي مثال به شكل زير نگاه فرماييد. در هر دو كامپيوتر شماره يك و دوم من برنامه فوق اجرا شده و چون دو كامپيوتر من با كابل شبكه و از طريق LAN به هم متصل هستند، نام LAN به شكل True تغيير كرده و چون دسترسي اينترنت وجود ندارد پارامتر آن False هست. (برنامه در هردو كامپيوتر همين شكل است):

محيط برنامه در كامپيوتر اول - ارتباط شبكه LAN بين دو كامپيوتر - بدون اينترنت

. اما در شكل‌ بعدي كامپيوتر اول از طريق مودم و به شكل DIALUP به اينترنت وصل شده و كامپيوتر دوم از طريق كابل LAN و كامپيوتر اول به اينترنت وصل مي‌شود:
ه
كامپيوتر اول - اتصال مستقيم به اينتر نت از طريق مودم Dialup ه كامپيوتر دوم - اتصال به اينترنت از طريق كابل LAN و كامپيوتر دوم

. البته براي تست‌ها شبكه حتمن نيازي به داشتن دو يا ... كامپيوتر به شكل فيزيكي نيست! شما مي‌توانيد با نصب برنامه‌هاي شبيه ساز PC همانند VMWare يا Microsoft Virtual PC ، برنامه‌هاي خود را با شبكه‌هاي اين نوع برنامه‌ها تست نماييد. در كل برنامه بسيار خوبي نوشتيد و با كمي تغييرات فوق العاده مي‌شود. به بخشيد اگر جسارتي پيش آمد...

نكته: (بزرگي حجم برنامه به خاطر آيكنش هست!!!)


موفق باشيد.

خداحافظ
IgImAx
86/11/23
27653.gif
26650.gif

من Sample Code و فايل اجرايي رو امتحان كردم. فايل اجرايي، درست كار مي كرد اما سمپل كد با اين ارور مواجه مي شد:


ميشه به جاي سمل كد، Sample Project بذاري كه مطمئن باشيم درست كار مي كنه؟

راستي اين كه گفتي ساعت هاي بعد از ظهر رو جزو شبانه حساب مي كنه، آيا شما به تنظيمات شبانه و روزانه دست زدي و اينجوري شده يا دست نزدي؟ چون اگه تنظيم رو عوض نكرده باشي فقط 1 تا 7 AM بايد شبانه حساب بشه.

با سپاس از وقتي كه ميذاري
 

igimax

کاربر فعال کامپیوتر
تاریخ عضویت
17 سپتامبر 2004
نوشته‌ها
3,410
لایک‌ها
1,348
سن
49
سلام جواد جان
1.gif


ميشه بگي با اين توابع كه گذاشتي، تكليف كانكشن هاي ADSL چي ميشه؟
. مودم‌هاي ADSL به دو روش زير به كامپيوتر وصل مي‌شوند:
1) LAN ه
2) USB ه
. تابع InternetGetConnectionEx حالت اول را به شكل LAN گزارش مي‌دهد چون از طريق درگاه LAN اين كانكشن صورت گرفته. اما حالت دوم را تست نكرده‌ام. به دليل آنكه سوال فرموديد، به يكي از دوستانم كه مودم ADSLي داشت كه از طريق USB به كامپيوترش متصل مي‌شد موضوع را اطلاع دادم و قرار است تا 1 ساعت ديگر برنامه كوچك فوق را دونلود كرده و به كمك آن موضوع فوق را تست نمايد. نتيجه تست را هر زمان كه به من اطلاع داد به اطلاع شما مي‌رسانم.
. اما فراموش نفرماييد كه تابع دوم يعني "InternetCheckConnection" هست كه مي‌تواند به درستي وجود "دسترسي به اينترنت" را تشخيص دهد حتا اگر تابع اول نوع Connection را اشتباه تشخيص دهد.

راستي اين كه گفتي ساعت هاي بعد از ظهر رو جزو شبانه حساب مي كنه، آيا شما به تنظيمات شبانه و روزانه دست زدي و اينجوري شده يا دست نزدي؟ چون اگه تنظيم رو عوض نكرده باشي فقط 1 تا 7 AM بايد شبانه حساب بشه.
. فكر كنم كه بار اول دست به مقادير پيش فرض نزده بودم و وقتي مشكل را ديدم تنظيمات خود را اعمال نمودم. اما عزيز جان برادر، با هر تنظيمي كه اعمال نموده باشم باز هم ساعت 1:09PM يا 2:44PM را كه جزو ساعات شبانه نياورده‌ام!!؟ با اين حال دوباره اين موضوع را برروي سيستم خود چك مي‌كنم.

نكته: (جواد جان كل مطالب را نياز نيست Quote كني! خيلي اين تاپيك را سنگين كردي! )

موفق باشيد.
67.gif

خداحافظ
IgImAx
86/11/30
26.gif
103.gif
 
Last edited:

igimax

کاربر فعال کامپیوتر
تاریخ عضویت
17 سپتامبر 2004
نوشته‌ها
3,410
لایک‌ها
1,348
سن
49
سلام جواد جان
1.gif


. من تا داشتم پست قبلي را مي‌نوشتم شما پست 13 را ويرايش كرده بوديد! خوب از اول شروع كنم:
1) برنامه برروي مودم‌هاي ADSL كه از طريق USB به كامپيوتر متصل مي‌شوند چك شد و نتيجه تابع InternetGetConnectionEx كانكشن MODEM بود. پس تابع فوق براي مودم‌هاي ADSL Lan كد LAN را برگشت مي‌دهد و براي مودم‌هاي ADSL USB كد مودم را برگشت مي‌دهد.

2) در مورد ساعت روز يا شب برنامه من دو كانكشن ديال آپ، ITC و ITC2 درست كردم و تنظيمات ساعت ITC را 0 تا 0 قرار دادم و ITC2 را 0 تا 8 قرار دادم. دو عكس در لينك زير هست.


3) در مورد مشكل Source كد هم:
من Sample Code و فايل اجرايي رو امتحان كردم. فايل اجرايي، درست كار مي كرد اما سمپل كد با اين ارور مواجه مي شد:
. همانطور كه رنگ كادر را مشاهده مي‌نماييد سبز است. اين به معني Error نيست و يك نوع Warning محسوب مي‌شود. من اين مشكل را يادام رفت در پست قبلي بگويم. در مورد اين Warning يعني مشكل "Unbalanced the stack" از پيام‌هاي MDA را كلي مطالعه نمودم. اين Warning را در مورد اكثر توابع API مي‌دهد. متاسفانه جايي براي تصحيح اين Warning نيافتم. تنها راهي كه يافتم، در خود MSDN روش خاموش كردن اين Warning بود!!!!! اگر روش درست كردن اين Warning را يافتي به من هم آموزش بده. ممنون. اما براي خاموش كردن اين Warningه:
1) از منوي Debug\Exceptions را انتخاب كن.
2) "Managed Debugging ..." را باز كن.
3) تيك گزينه "PInvokeStackImbalance" رو از ستون Thrown حذف كن.

4)
فايل Project برنامه فوق را در لينك زير قرار دادم.


موفق باشيد.
67.gif


خداحافظ
IgImAx
86/11/30
26.gif
103.gif
 
Last edited:

DVBXBOX

Registered User
تاریخ عضویت
4 جولای 2005
نوشته‌ها
156
لایک‌ها
0
محل سکونت
Tehran
بسیار خوشحال شدم که دیدم اساتید برنامه نویسی نسبت به نوشتن همچین برنامه ای اقدام کرده اند. من طرفدار صد در صد این برنامه هستم و هر گونه کمک مادی و معنوی رو دوست دارم براش داشته باشم. اینترنت من ADSL هست و از مودم ASUS AM602 استفاده می کنم... می خواستم خواهش کنم لینک این برنامه رو جهت استفاده در این مودم قرار بدید تا بتونم من هم از این برنامه خوب استفاده کنم.

ممنون می شم...
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
بسیار خوشحال شدم که دیدم اساتید برنامه نویسی نسبت به نوشتن همچین برنامه ای اقدام کرده اند. من طرفدار صد در صد این برنامه هستم و هر گونه کمک مادی و معنوی رو دوست دارم براش داشته باشم. اینترنت من ADSL هست و از مودم ASUS AM602 استفاده می کنم... می خواستم خواهش کنم لینک این برنامه رو جهت استفاده در این مودم قرار بدید تا بتونم من هم از این برنامه خوب استفاده کنم.

ممنون می شم...
دوست عزيز
با سپاس از لطف شماچ
منظور از اين كه:
«لينك برنامه را براي استفاده در اين مودم قرار بديد» چيه؟

لينك دانلود اين برنامه كه در پست 6 صفحه قبل هست و براي تمام مودم هاي Dial-up و ADSL هم كار مي كنه. فقط چنانچه از شبكه هاي مجازي يا حقيقي ديگري غير از اينترنت استفاده كنيد، مدت زمان اتصال به آن شبكه ها رو هم جزو اتصال به اينترنت حساب مي كنه و هميشه فقط مدت زمان اتصال به يك شبكه را مي سنجه. ضمناً اين برنامه، فقط مدت زمان رو حساب مي كنه، حجم دانلود رو حساب نمي كنه.

اين برنامه براي رفع نياز كساني مثل خودم و شما نوشته شده. اگر اشكالي در قسمتي ديديد، بگيد تا توي نسخه بعدي اصلاح كنم.
 

arash100056

کاربر تازه وارد
تاریخ عضویت
9 ژانویه 2007
نوشته‌ها
1
لایک‌ها
0
نمیشه برنامه کنتور را با ویستا سازگارش کنید
ممنون میشم آخه ما ویستایی هستیم وشدیدا نیازمند برنامه
با تشکر
 

javad2000

Registered User
تاریخ عضویت
10 جولای 2005
نوشته‌ها
1,338
لایک‌ها
25
نمیشه برنامه کنتور را با ویستا سازگارش کنید
ممنون میشم آخه ما ویستایی هستیم وشدیدا نیازمند برنامه
با تشکر
آرش جان. دنبالش هستم، ولی مشکلاتی داره. چون ویستا، ساختارش با اکس پی فرق می کنه. اگه بتونم حتماً این کارو می کنم.
 
بالا