أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية الحصول على موقع مجلدات خاص ترحيل DLL

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية241733
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
أثناء ترقية من نظام التشغيل Windows 95 أو Windows 98 إلى Windows 2000 Professional ، الترحيل DLL قد تحتاج إلى الوصول إلى المجلدات الخاصة، مثل مجلد القائمة ابدأ أو مجلد سطح المكتب. لا يمكن ترحيل DLL افترض أن هذه المجلدات موجودة الافتراضية مواقع. بدلاً من ذلك، يجب استخدامه SHGetSpecialFolderPath أو SHGetFolderPath.
معلومات أخرى
سوف تعمل SHGetSpecialFolderPath فقط على Windows 95 إذا تم تثبيت Internet Explorer 4.0 مع تحديث سطح المكتب. على نظام التشغيل Windows 2000 دائماً SHGetSpecialFolderPath ستعمل. ومع ذلك، في كلتا الحالتين، فمن الأفضل استخدام API SHGetFolderPath جديد وهو مجموعة شاملة لـ SHGetSpecialFolderPath. لاستخدام SHGetFolderPath على نظام التشغيل Windows 95 أو Windows 98، يجب إعادة توزيع الملف SHFolder.dll مع الترحيل DLL.

يمكن الحصول على SHFolder.dll من Platform SDK أحدث. لتحميل Platform SDK راجع موقع التالي على الويب: عند تثبيت Platform SDK ، تأكد من تثبيت المكونات القابلة لإعادة التوزيع بيئة التصنيع. أيضاً، اختيار دمج Platform SDK مع Microsoft Visual C++ عند المطالبة. يعد هذا ضرورياً لوجود ملف SHFolder.h مطلوب. بمجرد تثبيت Platform SDK البحث مجلد التثبيت SHFolder.exe القابل للتنفيذ القابلة لإعادة التوزيع. تثبيت هذا الملف SHFolder.dll و كافة التحديثات الأخرى المطلوبة لتشغيله على Windows 95 أو Windows 98. يجب تشغيل هذا الملف القابل للتنفيذ على الكمبيوتر الخاص بالمستخدم عندما يضع المستخدم DLL الترحيل على الكمبيوتر. يمكن أيضاً أن تثبيته أثناء إعداد التطبيق.

توضح التعليمة البرمجية التالية كيفية الحصول على مؤشر API SHGetFolderPath:
#include <windows.h>#include <shfolder.h>PFNSHGETFOLDERPATHA GetFuncPtr_SHGetFolderPathA(){   static HMODULE hMod = NULL;   PFNSHGETFOLDERPATHA pSHGetFolderPath = NULL;   // Load SHFolder.dll only once   if (!hMod)      hMod = LoadLibrary("SHFolder.dll");   if (hMod)      // Obtain a pointer to the SHGetFolderPathA function      pSHGetFolderPath = (PFNSHGETFOLDERPATHA)GetProcAddress(hMod,          "SHGetFolderPathA");   return pSHGetFolderPath;}				

يوضح نموذج التعليمة البرمجية التالية استخدام هذه الدالة المحتملة واحد. أثناء ترقية إلى Windows 2000 ، قد يحتوي على أحد تطبيقات الخاصة بـ Windows 2000 البرنامج أو الأداة المساعدة يتطلب أحد الاختصارات في التطبيق بدء القائمة مجلد البرامج. بعد نسخ برنامج جديد إلى الكمبيوتر, يمكنك الترحيل DLL إضافة اختصار إلى القائمة ابدأ الخاص بالمستخدم. للحصول على إعداد "لكل مستخدم" ، تقوم الدالة MigrateUserNT هو أفضل مكان لتنفيذ هذه المهمة.

تأخذ الدالة التالية المعلمات الثلاث. المعلمة الأولى هو المسار إلى الهدف القابل للتنفيذ. المعلمة الثانية عبارة عن وصف. المعلمة الأخيرة هي مجلد فرعي التي سيتم إنشاؤها في مجلد البرامج القائمة ابدأ. هذا مكان إنشاء الاختصار.
#include <windows.h>#include <objbase.h>#include <shlobj.h>#include <shfolder.h>HRESULT CreateUserStartMenuShortcut(LPSTR pszShortcutFile,            LPSTR pszDescription, LPTSTR pszRelativeFolder){   HRESULT hr;   PFNSHGETFOLDERPATHA pSHGetFolderPath = NULL;   TCHAR pszLink[MAX_PATH];   BOOL bFound = FALSE;   pSHGetFolderPath = GetFuncPtr_SHGetFolderPathA();   // Find the current user's Start Menu Programs folder   if (pSHGetFolderPath)      bFound = SUCCEEDED(pSHGetFolderPath(NULL, CSIDL_PROGRAMS,                            NULL, SHGFP_TYPE_CURRENT, pszLink));   if (bFound)   {      // Proceed to create the shortcut      IShellLink *pIShellLink = NULL;      IPersistFile *ppf = NULL;      WCHAR pLinkUnicode[MAX_PATH];      CoInitialize(NULL);      // Get a pointer to the IShellLink interface.      hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,                            IID_IShellLink, (void **)&pIShellLink);      if (SUCCEEDED(hr))      {         // Get a pointer to IPersistFile interface for saving shortcut         hr = pIShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf);         if (SUCCEEDED(hr))         {               hr = pIShellLink->SetPath(pszShortcutFile);            hr = pIShellLink->SetDescription(pszDescription);            if (SUCCEEDED(hr))            {               // Add the target folder to the Start Menu Programs path               lstrcat(pszLink, "\\");               lstrcat(pszLink, pszRelativeFolder);               lstrcat(pszLink, "\\");               // Create the directory if it does not exist               CreateDirectory(pszLink,NULL);               // Add the file name for the shortcut               lstrcat(pszLink, pszDescription);               lstrcat(pszLink, ".lnk");               // Convert string to Unicode, and call IPersistFile::Save()               MultiByteToWideChar(CP_ACP, 0, pszLink, -1, pLinkUnicode, MAX_PATH);               hr = ppf->Save(pLinkUnicode, TRUE);            }            ppf->Release();         }         pIShellLink->Release();      }      CoUninitialize();   }   return hr;}				
راجع وثائق SHGetSpecialFolderPath و SHGetFolderPath لتحديد أنواع أخرى من المجلدات الخاصة التي يمكن الحصول على هذه الدالات. ملاحظة في المثال تسمى CoInitialize و CoUnitialize ضمن هذه الدالة. إذا تم استخدام COM في الدالات الأخرى, يجب أن يتم نقل هذه الاستدعاءات إلى دالة DllMain DLL الترحيل. استدعاء CoInitialize الإعلام DLL_PROCESS_ATTACH و CoUninitialize إعلام DLL_PROCESS_DETACH.
مراجع
للحصول على مزيد من المعلومات حول الترحيل DLLs راجع الموضوع التالي في مكتبة MSDN:
النظام الأساسي SDK ";" خدمات إدارة ";" الإعداد ";" واجهة ملحق الترحيل

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 241733 - آخر مراجعة: 12/05/2015 15:55:18 - المراجعة: 3.4

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows 98 Standard Edition, Microsoft Windows 95

  • kbnosurvey kbarchive kbmt kbfaq kbhowto kbmigrate kbsetup KB241733 KbMtar
تعليقات