روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
سلام
چطور می تونم یه رشته رو از یه برنامه به دیگری پاس بدم؟
Sendmessage رو کشف کرده بودم اما چطور متن رو دریافت کنم؟
قدیم یه ادیت مخفی میساختم وقتی متنش تغییر می کرد بررسیش می کردم.
راه آسونتر و شناخته شده تری وجود داره؟
علاوه بر اینکه نمی دونم چرا findWindow گاهی شکست میخوره و پنجره رو پیدا نمی کنه در حالی که پنجره موجوده!
ظاهرا فرق می کنه وقتی یه برنامه اجرا بشه دومی قبلش در حال اجرا باشه یا بعد اجرا بشه و بعد findWindow استفاده بشه.
(باورم نمیشه حرفه ای ها اصلا از این جور چیزها استفاده واقعی بکنند.فقط منم که هنوز آدم نشدم!)
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
این صفحه رو دیدم اما نمی فهمم
WM_MY_MESSAGE = WM_USER + 1;
یعنی چی؟
علاوه بر اینکه من میخوام کارکتر هم بفرستم(در واقع اسم فایل و شماره بایت)
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
سلام
این کدیه که من استفاده می کنم:
procedure SendStringToApplication(AppHandle, MyHandle: THandle; s: AnsiString);
var
CopyDataStruct: TCopyDataStruct;
begin
if AppHandle = 0 then
Exit;
CopyDataStruct.dwData := 0; //use it to identify the message contents
CopyDataStruct.cbData := 1 + Length(s);
CopyDataStruct.lpData := PAnsiChar(s);
SendMessage(AppHandle, WM_COPYDATA, Integer(MyHandle), Integer(@CopyDataStruct));
end;
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
.
.
procedure TRootForm.WMCopyData(var Msg: TWMCopyData);
var
s: string;
begin
if Msg.From = Application.Handle then // not root
Exit;
s := PAnsiChar(Msg.CopyDataStruct.lpData);
lblLog.Caption := s;
end;
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
نمی دونم برای چی دکمه تشکر رو برداشتند.ممنونم.
این اواخر جستجوی تالار خراب شده؟چون چند بار شده دنبال چیزی گشتم پیدا نکردم.مثلا همین الآن گرید رو جستجو دادم هیچی پیدا نکرد
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
می بخشید این دو قسمت کد رو برای چی گذاشتید؟
if AppHandle = 0 then
Exit;
if Msg.From = Application.Handle then // not root
Exit;
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا
اولی برای اینه که هندل ولید باشه، زیاد مهم نیست و می تونید برش دارید
دومی هم برای اینه که فرم به خودش استرینگ نفرسته، تو پروژه من مهم بود، ممکنه برای شما نباشه
نقل قول: روش اصولی رد و بدل کردن رشته بین دو برنامه در حال اجرا