|
[ Proko @ 29.06.2007. 10:44 ] @
| Pomoću izraza Shell(putanja) se pozivaju (otvaraju) programi koji imaju "exe".
Meni je potrebna naredba, koja bi otvorila neki program (dokument), koji nije exe, napr. exelov dokument, ili jpg slika.
Pokušavao sam i pomoću "sendkeys", ali ni to ne radi kada je jedan od "keys" neko slovo.
"^+" radi... |
[ Aleksandar Ružičić @ 29.06.2007. 13:53 ] @
za to se koristi ShellExecute API funkcija, o tome je pisano vec milion puta ovde na forumu, mogao si da koristis pretragu :)
skini API-Guide (imash link u TOP temi) u njemu imash primere, evo paste iz njega:
Code:
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
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: [email protected]
'Send an E-Mail to the KPD-Team
ShellExecute Me.hwnd, vbNullString, "mailto: [email protected]", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
ovo je kod koji ce da ti otvori default mail klijent, a da bi otvorio bilo koji tip fajla (u default programu za taj tip fajlova) onda treba da prosledis "open" kao lpOperation:
Code:
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
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
ShellExecute Me.hwnd, "open", "C:\document1.doc", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
ovo ce ti pokrenuti Word i otvoriti C:\document1.doc fajl...
[ Shadowed @ 29.06.2007. 14:39 ] @
Ili Shell ("cmd.exe /C c:\test.txt") ;)
[ Proko @ 29.06.2007. 17:54 ] @
Hvala puno...radi!
Inače, da sam znao kako da to tražim, verovatno bih ga i našao na netu.
Citat: Shadowed: Ili Shell ("cmd.exe /C c:\test.txt") ;)
Ovo ne radi, ili treba još nešto...imate posla sa početnikom, pa stoga molim za strpljenje.
[ Shadowed @ 29.06.2007. 20:08 ] @
Meni radi.
Naravno, moras imati taj test.txt na c:, ili upisi putanju do svog fajla koji hoces da pokrenes.
[ Proko @ 29.06.2007. 20:22 ] @
To mi je jasno, tako sam i u predhodnom slučaju upisao putanju, i radi.
Da li u ovom slučaju treba deklarisati neku funkciju, ili nešto tako, kao što je u onom slučaju gore?
Mada sam rešenje već dobio, nije loše znati više načina...
[ Proko @ 29.06.2007. 20:43 ] @
Radi sad i meni. Ja imam dva OS, tako da sam umesto C napisao F, i nije radilo:
Shell ("cmd.exe /F F:\test.txt")
Kada sam napisao:
Shell ("cmd.exe /C F:\test.txt")
radi, ali se uz traženi fajl otvara i "cmd.exe", ali ne C, već F. Kada zatvorim traženi fajl, zatvori se i to, tj nestaje sa task bara.
Sve u svemu, zadovoljan sam odgovorima, i hvala još jednom.
[ Shadowed @ 29.06.2007. 20:53 ] @
Zapravo, upravo /C parametar bi trebao da natera prozor konzole da se odmah zatvori. Probaj umesto navedenog shell("cmd.exe /C start f:\test.txt")
[ Proko @ 29.06.2007. 21:16 ] @
To je već bolje, tj. zatvara se.
Znači, to C nije deo adrese?
[ Shadowed @ 29.06.2007. 21:35 ] @
Ovako :)
Ti funkciom Shell pokreces cmd.exe program. Njemu kao parametre prosledjuces /C start f:\test.txt. Pri tome /C oznacava da komanda bude izvrsena a cmd.exe se zatvori odmah (ne znam zasto ne radi). cmd.exe izvrsava program ili pokrece fajl ili izvrsava komandu koja mu se prosledi (nakon ovih /nesto parametara). Zato smo prosledili putanju do fajla. E sad, to iz nekog razloga tebi nije radilo pa smo umesto fajla pokrenuli komandu start koja radi slicnu stvar - pokrece program ili fajl koji joj je prosledjen.
Za vise informacija, Start > Run, upisi cmd.exe, enter. Kada se pokrene Command prompt, probaj komande cmd /? i start /?
[ Proko @ 05.07.2007. 14:49 ] @
Imao bih još jedno pitanje, ako nije problem:
Zašto mi tako napravljen exe fajl u VB-u ne radi na drugom računaru?
Ništa komplikovano, samo jedna forma (sa satom) i dugme za otvaranje nekog programa. Kod mene radi u obe varijante, a na drugom računaru se pojavi samo sat, a dugme ne radi.
[ Shadowed @ 07.07.2007. 19:30 ] @
Kako ne radi? Tj. koja greska bude prikazana?
[ Proko @ 24.07.2007. 19:00 ] @
Bio sam na odmoru, tako da sam tek sada u mogućnosti da odgovorim; kada kliknem na dugme pojavi se sledeće:

[ goranvuc @ 24.07.2007. 19:07 ] @
Pa ako ne postavis kod, mi jedino mozemo da ti pomognemo uz pomoc nekih natprirodnih sposobnosti (ja ih nemam)
[ Proko @ 24.07.2007. 22:50 ] @
Kod je sledeći:
Code: 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
Const SW_SHOWNORMAL = 1
Private Sub Label1_Click()
ShellExecute Me.hwnd, "open", "E:\KUVAR.xls", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
Private Sub Label2_Click()
ShellExecute Me.hwnd, "open", "E:\KUVAR.xls", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
Private Sub Label3_Click()
ShellExecute Me.hwnd, "open", "E:\KUVAR.xls", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Format(Time, "hh:mm:")
Label2.Caption = Format(Date, "d.mmmm.yyyy.")
Label3.Caption = Format(Time, "ss")
End Sub
Private Sub Form_Load()
Timer1.Interval = 500
End Sub
Private Sub Form_Click()
ShellExecute Me.hwnd, "open", "E:\KUVAR.xls", vbNullString, "C:\", SW_SHOWNORMAL
End Sub
Uradio sam tako, da bilo gde da se klikne mišem otvara se dokument "KUVAR.xls". Adresa tog dokumenta je identična i na drugom računaru, ali tamo ne radi.
[ goranvuc @ 24.07.2007. 23:04 ] @
Jedino sto mi pada na pamet je da probas umesto "c:\" da stavis za lpDirectory da je vbNullString.
[ Proko @ 26.07.2007. 09:19 ] @
Da, tako radi. Ako nije previše komplikovano, objasni mi zašto je to tako.
U svakom slučaju, hvala ti na pomoći.
[ goranvuc @ 26.07.2007. 09:37 ] @
Iskreno da ti kazem, nemam pojma - to sam ti predlozio jer je taj parametar u sustini visak, a sve ostalo mi se cinilo da je korektno. Mozda ce ti neko drugi izneti tacan razlog, ja se nisam previse udubio u problematiku (nisam cak ni probao tvoj kod), ali nema veze - bitno da je problem otklonjen.
Pozdrav!
[ Marko_L @ 26.07.2007. 11:34 ] @
Citat: Da, tako radi. Ako nije previše komplikovano, objasni mi zašto je to tako.
lpDirectory je pointer na defaultni direktorijum i ako navedeš u lpFile kompletnu putanju do dokumenta, on uopšte nije potreban. U većini slučajeva nije bitno šta navedeš kao lpDirectory, trebalo bi da radi, ali očigledno ne uvek, što si video i na svom primeru. Dakle, ako navedeš kompletnu putanju do fajla, slobodno ostavi lpDirectory prazno, tj. ili "" ili vbnullstring. lpDirectory navodiš onda kada ne stavljaš kompletnu putanju do fajla. Recimo, ovo bi takođe trebalo da ti radi
Code: Private Sub Label3_Click()
ShellExecute Me.hwnd, "open", "KUVAR.xls", vbNullString, "E:\", SW_SHOWNORMAL
End Sub
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|