سلام
چطور میشه وقتی یه دستور با داس اجرا کردیم جوابشو بگیریم؟
واضحتر میگم
مثلا من این کد رو نوشتم
کد:
Shell "cmd.exe"
Dim WinShell
Set WinShell = CreateObject("Wscript.shell")
WinShell.SendKeys " Dos دستور مورد نظر برای اجرا در "
WinShell.SendKeys "{ENTER}"
حالا نتیجه رو میگه. اونا رو چطوری میتونم بفهمم. مثلا بیارم تو تکست باکس
راستي چرا موقعي كه يه بچ فايل با وي بي درست مي كنم و توش مي نويسم كه فلان فايل رو از روي هارد اجرا كنه اين كار رو انجام نميده ولي وقتي كه تو خود ويندوز به صورت دستي اجراش مي كنم جواب مي ده؟
يعني منظورم اينه كه با دستور shell اونو اجرا نمی کنه ولی روش کلیلک میکنی کار میکنه
veyskarami نوشته است:راستي چرا موقعي كه يه بچ فايل با وي بي درست مي كنم و توش مي نويسم كه فلان فايل رو از روي هارد اجرا كنه اين كار رو انجام نميده ولي وقتي كه تو خود ويندوز به صورت دستي اجراش مي كنم جواب مي ده؟
يعني منظورم اينه كه با دستور shell اونو اجرا نمی کنه ولی روش کلیلک میکنی کار میکنه
shell فقط برای فایل های exe و bat
اگه میخوای هر فایلی رو اجرا کنی باید یه کد دیگه بنویسی. الان یادم نیست پیدا کردم میزارمش اینجا
با این کد میتونی هر فایلی رو اجرا کنی
کد:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOW = 5
Private Sub Command1_Click()
On Error GoTo l
Dim f As String
f = "f:\robot.rar"
ShellExecute Form1.hwnd, "open", f, vbNullString, vbNullString, SW_SHOW
l: Exit Sub
End Sub
![[تصویر: 157.gif]](http://qsmile.com/qsimages/157.gif)
spiderman نوشته است:سلام
چطور میشه وقتی یه دستور با داس اجرا کردیم جوابشو بگیریم؟
واضحتر میگم
مثلا من این کد رو نوشتم
کد:
Shell "cmd.exe"
Dim WinShell
Set WinShell = CreateObject("Wscript.shell")
WinShell.SendKeys " Dos دستور مورد نظر برای اجرا در "
WinShell.SendKeys "{ENTER}"
حالا نتیجه رو میگه. اونا رو چطوری میتونم بفهمم. مثلا بیارم تو تکست باکس
فکر کنم بتوني اينطور مشکلت رو رفع کني
کد:
Shell "cmd.exe"
Dim WinShell
Set WinShell = CreateObject("Wscript.shell")
WinShell.SendKeys " Dos دستور مورد نظر براي اجرا در "
WinShell.SendKeys " > نام فايل متني"
WinShell.SendKeys "{ENTER}"
با اين کار تمام خروجب دستور توي اون فايل متني ذخيره مي شه و مي توني فايل رو با دستور Open باز کني و هر کار که دلت ميخواد روش انجام بدي
و بعد از کار ميتوني با دستور
فايل رو از بين ببري
حالا من يه سوال بپرسم
چطور مي شه هندل پنجره اي که قبل از انتخواب پنجره ي ما فعال بوده رو بدست آورد؟
من اين کار رو کردم که با GetForegroundWindow سريعا چک کنه و اگر هندل پنجره ي ما بدست اومد هندل قبلي رو بده ، اين کار درستيه و آيا راه بهتري هم هست؟
براي اينکه بهتر درک کنين توي ران تاپ کنين OSK و اجرا کنين و خودتون ببينين
تو صفحه اول وی بی مطرح میکردی بهتر بود. زودتر جواب میگرفتی
اينم حرفي !
نوشتم تا شايد شما بم جواب بدين !!!
آخه مشكل اينجاست من خودم از روش خودم استفاده كرده بودم و جواب مي داد اما الان كه از همون روش استفاده مي كنم جواب نمي ده
veyskarami نوشته است:آخه مشكل اينجاست من خودم از روش خودم استفاده كرده بودم و جواب مي داد اما الان كه از همون روش استفاده مي كنم جواب نمي ده
اين روش خودم چيه :!: :?: :!: :?:
از دستور Shell استفاده کرده بودم