سؤال

وأنا أحاول أن استخدام ShellExecute لفتح ملف في Excel. كنت أقرأ عن وظيفة في المنتديات MSDN، ولقد وجدت من المعلومات حول معلمات أكثر المقبض، التي هي المعلمة الأولى:

و"HWND [في] مؤشر إلى النافذة صاحب يستخدم لعرض واجهة المستخدم (UI) أو رسائل خطأ. يمكن أن تكون هذه القيمة NULL إذا لم يرتبط العملية مع نافذة".

ولقد سمعت أيضا هذا ويشار إلى أن مؤشر إلى الإطار الأصل. ما هو الإطار الأصل / مالك؟ كما ترون أدناه أنا باستخدام NULL للمقبض، ولكن منذ يرتبط العملية بالفعل مع نافذة، وأنا ربما تحتاج إلى التعامل معها، ولكن أنا لا أعرف ما الذي تريد استخدامه في التعامل معها.

ShellExecute(NULL, "open" ,"Excel.exe", 
    "C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls", 
    NULL, SW_SHOWNORMAL);
هل كانت مفيدة؟

المحلول

عادة 0

<اقتباس فقرة>   

وHWND: الإطار الأصل الذي سيحصل على MESSAGEBOX ممكن. هذه المعلمة هي عادة 0.

ويشير إلى إطار المستوى الأعلى: النافذة التي تفتح لايوجد أي والد، وهو الإطار الرئيسي ليتم تنفيذه على تطبيق

.

عند التبديل بين التطبيقات (ALT-TAB)، التي يتم عرض الإطار التالي المستوى الأعلى (التطبيق المقبل مع مقبض الأم يساوي 0) في الترتيب التصاعدي (على سبيل المثال).

وبطبيعة الحال، فإن الأم إلى التطبيق الخاص بك لا يمكن أن يكون نافذة سطح المكتب نفسه :

<اقتباس فقرة>   

إذا قمت بإنشاء نافذة الطفل الذي الأم هو GetDesktopWindow ()، يتم لصقها نافذة الآن إلى نافذة سطح المكتب. إذا لديك نافذة ثم يدعو شيء من هذا القبيل MESSAGEBOX ()، وأيضا وهذا هو حوار مشروط، ثم القواعد المذكورة أعلاه ركلة في وسطح المكتب يحصل على تعطيل والآلة الخبز المحمص.

لالمسار، وأود أن المشورة علامات الاقتباس المزدوجة المحيطة اقتباسات بسيطة: " ' ... ' "

"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"

ويمكن أن تعمل أيضا (غير مجربة) مع التنصيص المزدوجة: " "" ... "" "

"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""

وكما هو موضح من قبل <وأ href = "http://www.tech-archive.net/Archive/Access/microsoft.public.access.formscoding/2007-05/msg01211.html" يختلط = "نوفولو noreferrer" > هذا الموضوع .


والواقع، كما هو مذكور في سؤالك الآخر التي كتبها <وأ href = "https://stackoverflow.com/users/3857 / أندي "> اندي و Mesidin ، وفي <لأ href =" HTTP: // MSDN. microsoft.com/en-us/library/bb762153(VS.85).aspx "يختلط =" نوفولو noreferrer "> دليل ShellExecute وظيفة ، يمكنك فتح الملف، ويمر مساره في المعلمة.

ShellExecute( NULL, "open", 
              "Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\", 
              NULL, SW_SHOWNORMAL);

وهذا يعني التفوق هو التطبيق الافتراضي لفتح الملفات ملحق. XLS بالرغم من ذلك.

نصائح أخرى

وعندما ترى وصفته ب "التعامل مع لالإطار الأصل"، فهذا يعني أنها النافذة التي <م> ستكون الإطار الأصل من أي UI يختار وظيفة لعرضه. مقبض يمكنك تمرير قد تكون أو لا تكون بالفعل والد بعض إطار آخر في الوقت الذي ندعو ShellExecute، ولكن هذا لا يهم.

وماذا ShellExecuting تحديدا إكسل؟ إذا كان لديهم OpenOffice.org، تم كسر فيها - هل حقا ينبغي أن يكون استدعاء "فتح" الفعل على ملف جدول البيانات، لا تحتاج إلى رمز القرص الثابت في اسم "إكسل"، وهذا ما هو ShellExecute ل

هل هناك أي سبب محدد، كنت تستخدم ShellExecute؟

ويمكنك فتح ملف XLS باستخدام [System.Diagnostics.] Process.Start [اسم الملف]
أعتذر، لم أكن ننظر إلى علامات ونفترض أن كنت تستخدم صافي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top