PDA

View Full Version : سوال: چگونه تشخیص دهیم برنامه ما در چه ویندوزی اجرا می شود؟



حسین محمدی
پنج شنبه 03 اردیبهشت 1388, 15:52 عصر
با سلام

اجرای برنامه من بسته به اینکه در ویندور XP یا 2000 یا Vista اجرا می شود اندکی متفاوت خواهد بود. برای مثال به GetModuleFileName (http://msdn.microsoft.com/en-us/library/ms683197(VS.85).aspx)مراجعه کنید.

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

Nima_NF
پنج شنبه 03 اردیبهشت 1388, 16:14 عصر
از API های GetVersionEx برای گرفتن اطلاعات ویندوز می توانید استفاده کنید. (OSVERSIONINFOEX را مقدار دهی اولیه کنید)




OSVERSIONINFOEX OSversion;
ZeroMemory(&OSversion, sizeof(OSVERSIONINFOEX));
OSversion.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

GetVersionEx (&OSversion);

if (OSversion.dwMajorVersion >= 6 )
{
// windows Vista / Seven

}

- ضمنا VerifyVersionInfo نیز برای چک کردن نسخه ویندوز مورد نظر خودتان کاربرد دارد.
- برای سرویس پک نیز از wServicePackMajor برای همان ساختار استفاده کنید.
- حتما از آخرین نسخه اطلاعات MSDN برای این ساختار (http://msdn.microsoft.com/en-us/library/ms724833%28VS.85%29.aspx) استفاده کنید تا توضیحات برای همه ویندوزهای جدید هم وجود داشته باشد.

حسین محمدی
یک شنبه 06 اردیبهشت 1388, 10:43 صبح
ممنون از جواب خوب شما

یک سوال دیگر:

من با CDataSource به یک دیتابیس کانکت می شوم؟

مثلا SQL Server یا کاربر (Microsft OLE DB Provider for SQL Server) را انتخاب می کند.

در این حالت می توان ورژن SQL Server را که به آن کانکت شده ایم به دست آورد؟

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



print @@version


SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')


که البته می خواهم ببینم بدون اجرای دستورات و از طریق IDataInitialize یا IDBInitialize

و دوما می توانم بفهمم که کاربر به چه دیتابیسی کانکت می شود یا خیر؟ یعنی provider را چه چیزی انتخاب کرده ؟

Nima_NF
یک شنبه 06 اردیبهشت 1388, 12:50 عصر
برای provider ، نوع آن و ... باید بتوانید از متد GetProperties استفاده کنید (فلگ هایی مثل DBPROP_DBMSVER و ... (http://msdn.microsoft.com/en-us/library/ms716756%28VS.85%29.aspx))