PDA

View Full Version : انتقال برنامه به دسکتاپ



lord_viper
چهارشنبه 01 فروردین 1386, 00:01 صبح
با سلام
من یه برنامه نوشتم که دسکتاپ مجازی میسازه وقتی رو دسکتاپ جدید سوئیچ میکنم میخواهم این برنامه هم بیاد رو این دسکتاپ از چه توابعی باید برای این کار استفاده کنم؟
با تشکر

Valadi
چهارشنبه 01 فروردین 1386, 07:18 صبح
در واقع Shortcut بسازی ؟

lord_viper
چهارشنبه 01 فروردین 1386, 11:52 صبح
نه عزیز ببینید منیک دسکتاپ ایجاد میکنم و با سوئیچ دسکتاپ میام روش ولی این برنامه ای که این کارو میکنه تو دسکتاپ قبلی که توش ران شده میمونه نمیدونم چطوری کدنویسی کنم که این برنامه هم سوئیچ بشه رو این دسکتاپ

Hamid_PaK
پنج شنبه 02 فروردین 1386, 13:46 عصر
منیک دسکتاپ ایجاد میکنم و با سوئیچ دسکتاپ میام روش
این دسکتاپ مجازی، دومین دسکتاپ ویندوز محسوب می شود یا خیر ؟؟؟

dkhatibi
پنج شنبه 02 فروردین 1386, 21:28 عصر
نه عزیز ببینید منیک دسکتاپ ایجاد میکنم و با سوئیچ دسکتاپ میام روش ولی این برنامه ای که این کارو میکنه تو دسکتاپ قبلی که توش ران شده میمونه نمیدونم چطوری کدنویسی کنم که این برنامه هم سوئیچ بشه رو این دسکتاپ

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

lord_viper
جمعه 03 فروردین 1386, 23:38 عصر
باسلام
دسکتاپ دوم محسوب میشه

Hamid_PaK
شنبه 04 فروردین 1386, 06:01 صبح
اگر مثل دسکتاپ دوم ویندوز محسوب شود و حالت Extended داشته باشد ، باید سمت راست دسکتاپ اول شما ادامه داشته باشد و پس زمینه ویندوز در دسکتاپ دوم (مجازی) نیز دیده شود ...
پس برای انتقال برنامه به این دسکتاپ باید پنجره را به سمت راست منتقل کنید (خارج از دسکتاپ اول).
در صورت امکان کد تولید این دسکتاپ را منتشر کنید ...

با تشکر ، یا حق ...

lord_viper
یک شنبه 05 فروردین 1386, 23:38 عصر
با سلام
این اون بخش از کده که دسکتاپ دوم رو میسازه



procedure TForm1.Button1Click(Sender: TObject);
const
DESKTOP_ALL_ACCESS = DESKTOP_CREATEMENU or DESKTOP_CREATEWINDOW or
DESKTOP_ENUMERATE or DESKTOP_HOOKCONTROL or DESKTOP_JOURNALPLAYBACK or
DESKTOP_JOURNALRECORD or DESKTOP_READOBJECTS or DESKTOP_SWITCHDESKTOP or
DESKTOP_WRITEOBJECTS;
var
ThisDesktop: HDESK;
si: TStartupInfo;
pi: TProcessInformation;
a:array[0..256]of char;
begin
GetWindowsDirectory(a,sizeof(a));
ThisDesktop := CreateDesktop(pchar(edit1.Text), nil,nil, 0, DESKTOP_ALL_ACCESS,nil);
SetThreadDesktop(_ThisDesktop);
SwitchDesktop(_ThisDesktop);
FillChar(si, SizeOf(si), 0);
si.cb := SizeOf(TStartupInfo);
si.dwFlags := 0;
si.lpDesktop := PAnsiChar(edit1.Text);
si.wShowWindow := SW_SHOWNORMAL;
CreateProcess(pchar(a+'explorer.exe'),nil,nil,nil, False,0,nil,nil,si,pi);
end;

Hamid_PaK
دوشنبه 06 فروردین 1386, 18:28 عصر
در مورد CreateDesktop, OpenDesktop, SwitchDesktop و ... جستجو کردم.

این دستورات همانطور که شما هم فرمودید برای ساختن میز کار استفاده می شوند ولی نه مجازی چرا که ویندوز میزکار اصلی شما را نیز به همین صورت ساختار بندی کرده ...
کد شما صحیح است فقط بعد از اینکه شما میزکار را با آنکه جدید ساخته اید تعویض می کنید فوکوس به میزکار جدید منتقل می شود و شما دیگر امکان استفاده از میزکار قبلی را ندارید (البته نکته جالب اینجاست که با فشردن Alt+Ctrl+Del مدیریت وظیفه ها باز می شود ولی در میزکار قبلی) !!!

حالا شما می خواهید که برنامه تان به این میزکار انتقال یابد بطور کل تا جایی که من فهمیدم شما برنامه های جدید را می توانید در این میزکار جدید ایجاد و اجرا کنید ولی امکان انتقال از میزکار قبلی را ندارید چرا که همانطور که در ابتدا گفتم این کار تا زمانی ممکن است که یا میزکار شما Extended باشد (میزکار اضافی برای کار با دو مانیتور) و یا برنامه در آن اجرا شده باشد ...

*** در کل می توانید HDesk میز کار کنونی را در فایلی ذخیره کنید و برنامه را در میزکار دوم اجرا کنید و برای بازگشت از HDesk ذخیره شده برای تعویض میزکار استفاده کنید ...

یا حق ...