شباط / فبراير
2010
استدعاء برنامج خارجي في معظم لغات البرمجة لا توجد مشكلة. وهذه ليست في جاوة. في جاوة ، والتي تبدو في الأساس من هذا القبيل :
. exec ( "/pfad/zum/program" ) ; وقت التشغيل (ل"/ / الطريق / البرنامج".) GetRuntime. التنفيذية ؛
الآن ، ومع ذلك ، يجب على المرء أيضا أن نضع في الاعتبار شروط الحدود. هو ، على سبيل المثال ، جافا داخل القط الذي يحتوي على التطبيق مع تأثيرات السطح ، بطبيعة الحال. من حيث المبدأ ، يتم تشغيل كخدمة قط ، سواء كان ذلك الآن تحت لينكس أو ويندوز ، ويجب أن تلعب أي دور لهذه المشكلة الأساسية.
القط كخدمة أو عملية العميل ليست مجرد حقوق لتشغيل واجهة المستخدم الرسومية ، وبصرف النظر عن حقيقة أنه ليس مضمونا على ملقم يحتوي على واجهة رسومية. هنا ، تجدر الإشارة في الحفاظ على خادم ويندوز عن طريق سطح المكتب البعيد في مقارنة سه / وحدة صيانة نظام لينكس كمثال على ذلك.
وهذا هو ، هو خارجي تشغيل التطبيق (رسوم بيانية) من عملية جافا سطح المكتب ليست مشكلة ، يبدو على ملقم مختلف أيضا.
يمكن الوصول لينكس مستخدم آخر (في ظلها عملية الخدمة) للسماح للخادم العاشر مع آخر يدعى (الذي كان من الذاكرة). في هذه الحالة ، ومع ذلك ، خدمة ويندوز.
أيضا في ويندوز يبقي على استعداد لهذا المجلس يعني : في إدارة خدمات ، يمكنك تعديل خصائص الخدمة. تحت عنوان "الدخول" هي النقطة "للخدمة بالتفاعل مع سطح المكتب" تصريح. لتمكين هوك ، وحتى خادم عملية ، والتطبيق الرسومية ، مثل وورد أو إكسل بدء.
غالبا ما تكون هذه السنانير ، ولكن ليس الدواء المختار سيكون. على سبيل المثال ، لأنه لم يتم المطلوب مظهر الواجهة الرسومية من التطبيق أو الخادم ببساطة يتم تسجيل أي واحد يجب أن يكون / (على خادم منطقية ليس من غير المألوف). في هذه الحالة لقد وصلنا مع صناديقها جافا الخاصة في نهاية المطاف. في المثال جيم # ، يمكنك البدء في تطبيق غير مرئية وغير مرئية. هذا الاحتمال ليس جافا. لتحقيق هذا يجب علينا أن نبذل تفعل مع المجمع. لبرنامج ويندوز ، وهناك ما يسمى إكس ، رأس ، في هذا يمكنك أيضا إضافة ، أن التطبيق يجب أن يكون مرئيا. وهناك أيضا إشارة SW_HIDE يستخدم. سي + + التالي رمز المكالمات ، بناء على طلب ومجموعات لهم العلم SW_HIDE. للتأكد من أن هذا لا ، ولكن يجب تعيين في كل حالة ، dwFlag STARTF_USESHOWWINDOW.
# تشمل <windows.h> # تشمل <stdio.h> # تشمل <tchar.h> int argc, TCHAR * argv [ ] ) _tmain الفراغ (argc الباحث ، TCHAR * argv []) { STARTUPINFO الاشتراكية ؛ PROCESS_INFORMATION بي ؛ si, sizeof ( si ) ) ; ZeroMemory (& الاشتراكية ، sizeof (الاشتراكية)) ؛ sizeof ( si ) ; سي) سي. سي بي = sizeof (؛ SW_HIDE ; سي SW_HIDE =. wShowWindow ؛ STARTF_USESHOWWINDOW ; STARTF_USESHOWWINDOW. الاشتراكية dwFlags = ؛ pi, sizeof ( pi ) ) ; ZeroMemory (& بي ، sizeof (بي)) ؛ argc ! = 2 ) إذا كان (argc! = 2) { "Usage: %s [cmdline] \n " , argv [ 0 ] ) ; printf ("الاستخدام : ٪ ق [cmdline] \ ن" ، argv [0]) ؛ العودة ؛ } / / بدء عملية طفل. ! CreateProcess ( NULL , // No module name (use command line) إذا كان (CreateProcess (فارغة ، / / لا اسم وحدة (استخدام سطر الأوامر) ] , // Command line argv [1] ، / سطر الأوامر / فارغة ، / / لا مؤشر عملية توريث فارغة ، / / التعامل مع الموضوع لا للتوريث كاذبة ، / / مجموعة معالجة الإرث إلى خطأ CREATE_NO_WINDOW ، / / لا خلق الأعلام / / استخدام البيئة الأم كتلة ، لاغية فارغة / الأم / استخدم في الدليل بدءا وسي ، / / مؤشر إلى بنية STARTUPINFO // Pointer to PROCESS_INFORMATION structure وبي) / / مؤشر إلى بنية PROCESS_INFORMATION ) { "CreateProcess failed (%d). \n " , GetLastError ( ) ) ; printf ("فشل (٪ د) ن. CreateProcess \" ، تمت إعادة ()) ؛ العودة ؛ } / / انتظر حتى إنهاء عملية طفل. , INFINITE ) ; WaitForSingleObject (pi. hProcess ، لانهائي) ؛ / / إغلاق العملية ويعالج الموضوع. ) ; CloseHandle (بي hProcess) ؛ ) ; CloseHandle (hThread بي.) ؛ }
هذا سي + + يمكن قصاصات ، على سبيل المثال مع الحرة بورلاند سي + + مترجم ترجمة ويحصل بالتالي على مجمع عالمي للعلم SW_HIDE لبدء تشغيل البرامج.
ومع ذلك ، فمن الممكن أن لا تكون الأخيرة. لأسباب لا يمكن تفسيره ، وليس من الضروري بالنسبة لي التطبيق المطلوب على المستخدم تحت نظام ويندوز الذي يشغل قط افتراضيا ، ولكن من المستخدم محلية مختلفة تسمح. يمكن ضبط نفسه ، ولكن يتضح أيضا في الحوار أعلاه.
هذا يعني أنه كان من الممكن بالنسبة لي للبدء من جاوة باستخدام سي + + المجمع هو تطبيق رسومية دون الحاجة للمستخدم يتم تسجيل.
العلامات : ج + + ، الترميز ، جافا ، قط ، المجمع











الحذر. باقي الأعضاء والتي قد تكون مختلفة (أعلى) الحقوق. أن القط لتشغيل في نوع استجذار وقد لسبب ما.
فقلت له نعم ، لا إلى أي مستخدم آخر ، وانما أنشئت خصيصا من أجل قط. ان هذا ليس الحل الأمثل ، فإنه من الواضح ، ولكن للأسف لم يتم حلها بطريقة أخرى.
"في المثال جيم # ، يمكنك البدء في تطبيق واللامرئي مرئيا / لا" -- شكرا! ز * *