PDA

View Full Version : سوال: كپي متن از برنامه به برنامه exe ديگر



شاپرک
سه شنبه 18 مرداد 1390, 12:48 عصر
خلاصه ميگم :
ركوردي رو از ديتابيس ميخونم . يك متن رشته اي.
با زدن يك كليد ميخوام اين متن رو داخل Notepad نمايش بده.

چه روشي رو پيشنهاد ميكنيد؟

omid-vbAuto
سه شنبه 18 مرداد 1390, 18:45 عصر
خلاصه ميگم :
ركوردي رو از ديتابيس ميخونم . يك متن رشته اي.
با زدن يك كليد ميخوام اين متن رو داخل Notepad نمايش بده.

چه روشي رو پيشنهاد ميكنيد؟

شاپرک این کار کار خیلی خیلی ساده ای هستش.می تونید با یه سرچ به جواب برسین.اگه نشد من برنامه کمکی براتون میذارم.WEEKED

شاپرک
چهارشنبه 19 مرداد 1390, 08:56 صبح
من كاربر دائمي اين سايت هستم مطمئن باشيد قوانين سايت رو ميدونم قبل از ايجاد هر تاپيكي اول جستجو ميكنم!!! اما انتخاب كلمه جستجو هم مهمه! وقتي نميدونم روش كار به چه صورته دنبال چه كلمه اي بايد بگردم!!!!
من نميدونم اين چه رسميه تو اين سايت كه همه ميگن اگه خواستي بگو برات بذارم!!! خوب من اگه مشكل نداشتم كه تاپيك نميزدم!!!!

Behzad_MCP
چهارشنبه 19 مرداد 1390, 10:07 صبح
شاپرک عزیز از راه Copy To ClipBoard استفاده کن بعد متنتو از ClipBoard بخون و یه Notpade جدید بازکن متنتو بریز توش :)

شاپرک
چهارشنبه 19 مرداد 1390, 11:45 صبح
جناب Behzad_MCP واقعا خسته نباشيد!!! چشم بسته غيب گفتي دوست عزيز!

بازم معرفت اين سايت هاي خارجي!!!!
دارم به يه نتايجي ميرسم كامل شد اينجا هم ميزارم تا دوستان استفاده كنن.

Behzad_MCP
چهارشنبه 19 مرداد 1390, 12:04 عصر
شاپرک جان شما روش خواستی منم روشی که داشتو گفتم کد میخواسی خوب :)
(این نوشته به دلیل نداشتن محتوی فنی پاک شود لطفا)

Behzad_MCP
چهارشنبه 19 مرداد 1390, 12:36 عصر
این برای کپی تو کلیپ برد

My

.Computer.Clipboard.SetText(TextBox1.Text)

اینم برای باز کردن نت پد

Process.Start("notepad.exe", "C:\temp\myFile.txt")

Behzad_MCP
چهارشنبه 19 مرداد 1390, 13:15 عصر
بیا دوستم اینم دقیقا خمون چیزی که میخواستی فقط آخرش به جای "This is My Text" از کلیپ برد تکستتو پاس بده



Const WM_SETTEXT As Integer = &HC

<DllImport(
"user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, <MarshalAs(UnmanagedType.LPStr)> ByVal lParam As String) As IntPtr


End Function


Private Shared Sub OpenNotePad()

Dim pis As ProcessStartInfo = New ProcessStartInfo("notepad.exe")


pis.UseShellExecute =True
Dim notepad As Process = Process.Start(pis)

Dim textToAdd As String = "Text to add"

SendMessage(notepad.MainWindowHandle, WM_SETTEXT, IntPtr.Zero, textToAdd)

SendKeys.Send(
"This is my Text")


End Sub




Private Sub btnOpenNotPad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenNotPad.Click

OpenNotePad()


End Sub

Behzad_MCP
چهارشنبه 19 مرداد 1390, 13:24 عصر
راستی

Imports System.Runtime.InteropServices

pouyansaraf
چهارشنبه 19 مرداد 1390, 15:35 عصر
واقعا نمیدونی چرا ؟
بخاطر گرفتن ستاره هست دیگه بابام جان
البته منظورم با آقا بهزاد نیستا
سوء تفاهم نشه
تو اینترنت اینو پیدا کردم ولی نمیدونم چرا کار نکرد
ولی من متن دلخواهمو تو یه فایل متنی txt مینویسم و با نوت پد بازش میکنم

Const WM_SETTEXT As Integer = &HC
<DllImport("user32.dll")> _
Private Shared Function SendMessage(hWnd As IntPtr, Msg As Integer, wParam As IntPtr, <MarshalAs(UnmanagedType.LPStr)> lParam As String) As IntPtr
End Function

Private Shared Sub Main()
'ProcessStartInfo is used to instruct the Process class
' on how to start a new process. The UseShellExecute tells
' the process class that it (amongst other) should search for the application
' using the PATH environment variable.
Dim pis As ProcessStartInfo = New ProcessStartInfo("notepad.exe")
pis.UseShellExecute = True

' The process class is used to start the process
' it returns an object which can be used to control the started process
Dim notepad As Process = Process.Start(pis)

' SendMessage is used to send the clipboard message to notepad's
' main window.
Dim textToAdd As String = "Text to add"
SendMessage(notepad.MainWindowHandle, WM_SETTEXT, IntPtr.Zero, textToAdd)
End Sub


حالا شاید بخواهین تو پروسس جاری نوت پد رو اگر باز است پیدا کنه و توش بنوسیه که اینو نمیدونم ولی جالبه

شاپرک
دوشنبه 24 مرداد 1390, 13:27 عصر
جناب Behzad_MCP منظور بدي نداشتم; به هر حال ممنون :لبخندساده:

من notepad رو مثال زدم در واقع ميخوام متن رو داخل Equation Editor مربوط به Office كپي كنم.
C:\Program Files\Common Files\Microsoft Shared\EQUATION

اما نميدونم چرا مرحله آخر كه بايد Paste كنه اينكار انجام نميشه!!! منوي Paste فعاله اما Paste از طريق كد انجام نميشه! با زدن منو ميشه!
حتي از دستور SetForegroundWindow هم استفاده كردم نشد!!!! :ناراحت:

Behzad_MCP
دوشنبه 24 مرداد 1390, 13:55 عصر
دوست عزیز به لینک زیر یه سر بزن خیلی جالبه یه Sample هم داره توش

http://msdn.microsoft.com/en-us/library/bb407305(VS.80).aspx

شاپرک
سه شنبه 25 مرداد 1390, 10:30 صبح
بله جالب بود ولي مشكل من فرق داره!

شما همين كدي كه واسه Notepad گذاشتي خودت امتحان كردي؟
من امتحان كردم دفعه اول درست اجرا ميشه اما دفعات بعدي 5 6 تا Notepad باز ميكنه!!!

Behzad_MCP
سه شنبه 25 مرداد 1390, 11:10 صبح
آره شاپرک جان اون کد ایراد داره نمیدونم چرا API SendMessage که قراره یک Message به فرم اکتیو بفرسته کار نمیکنه آخرش من از SendKeys استفاده کردم که اصلا کاره درستی نیست در هر حال پیشنهاد میدم درمورد نت پد با استفاده از IsolatedStorage فایل متنی Save کنی بعد تو نت پد فراخوانی کنی ولی تو آفیس قضیه فرق میکنه خوشحال میشم اگه درباره مشکل بیشتر توضیح بدی چون خودمم به این موضوع علاقه مند شدم :)