• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

.exe dosyasını makro ile kontrol etme

Katılım
7 Eylül 2012
Mesajlar
4
Excel Vers. ve Dili
Excel 2007 - İngilizce
Merhabalar,

Excel'den bir .exe dosyasını açıp çalıştırmak istiyorum. Shell komutunu denediğimde sadece programı açıyor ve orada kalıyor. Programı run edebilmek için F9 tuşuna basılması yeterli. Böyle bir kod yazılabilir mi?

Teşekkürler..
 
Deneyiniz;

Kod:
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

Sub Emre()
    DosyaAdi = "Exe dosyasının yolunu yazın..."
    ShellExecute 0, "Open", DosyaAdi, "", "", vbNormalNoFocus
    Application.Wait (Now + TimeValue("0:00:02"))
    Application.SendKeys "{F9}"
End Sub
 
Çok teşekkürler, verdiğiniz kodu programı çalıştırmak için kullandık, sadece bu F9'un üzerine birkaç tuş daha göndermek istiyoruz. (Enter ve sonrasında da Alt+F4). Yukarıdaki kodu tekrarladık fakat sonuç alamadık. Galiba tüm komutları aynı anda veriyor. Önerebileceğiniz bir şey var mı?

Teşekkürler...
 
Çok teşekkürler, verdiğiniz kodu programı çalıştırmak için kullandık, sadece bu F9'un üzerine birkaç tuş daha göndermek istiyoruz. (Enter ve sonrasında da Alt+F4). Yukarıdaki kodu tekrarladık fakat sonuç alamadık. Galiba tüm komutları aynı anda veriyor. Önerebileceğiniz bir şey var mı?

Teşekkürler...

Kod:
Sub Emre()
    DosyaAdi = ".........................."
    ShellExecute 0, "Open", DosyaAdi, "", "", vbNormalNoFocus
    Application.Wait (Now + TimeValue("0:00:10"))
    Application.SendKeys "{F9}"
    Application.Wait (Now + TimeValue("0:00:01"))
    Application.SendKeys "{F10}"
End Sub

Bu şekilde olduğu zaman bende çalışıyor...
 
Ek'teki dosyaları inceleyiniz; tuşların keycode ve kesyascii karşıklarını bulabilirsiniz. Her tuş basımı öncesinde Wait metoduyla 1 sn. gibi bekleme yaparsanız istediğiniz olacaktır..

İyi günler...
 

Ekli dosyalar

SendKeys yöntemi çoğunlukla güvenilir olmamakla birlikte, MS dışı programlara müdahale edebilmek için bazan kullanılmak zorunda kalınıyor.

her SendKeys komutunun arasına Application.Wait (Now + TimeValue("0:00:10")) koymakta yarar var. (10 saniye için. bu değiştirilebilir.)


Alt = "%"
Ctrl = "^"
Shift = "+"

1'den fazla karakter göndermek için:
örnek: alt ve F ve X (klasik, bir uygulamayı kapatmak için kullandığımızı tuş kombinasyonu)
Kod:
SendKeys "%fx", True


burada kullanım var. yukarıdaki örnek te oradan.
http://msdn.microsoft.com/en-us/library/office/aa202943(v=office.10).aspx

Tuş Kod
BACKSPACE {BACKSPACE} veya {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
CLEAR {CLEAR}
DELETE veya DEL {DELETE} veya {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER (numeric keypad) {ENTER}
ENTER ~ (tilde)
ESC {ESCAPE} veya {ESC}
HELP {HELP}
HOME {HOME}
INS {INSERT}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RETURN {RETURN}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 -F15 {F1} -{F15}

Tuş Kombinasyonu - Kod İle Başlamalı
SHIFT + (plus sign)
CTRL ^ (caret)
ALT % (percent sign)


Örnek
Bu örnek XL'den çıkmak için SendKeys metodunu kullanır.

Application.SendKeys("%fx")
 
Ok, ben de 2. komutumda "(ENTER)" kullanmıştım ve çalıştırdığımda excel'e tekrar dönmüştü. Gönderdiğiniz listede ENTER'ın "return" anlamına geldiği yazıyor. Sanırım bu yüzden Excel'i tekrar açıyor..

Benim durumumda ENTER tuşuyla yapmak istediğim şey, F9'a bastıktan sonra çıkan bir mesaj kutusunu "Yes" (default değer) olarak cevaplamak. Program bu şekilde çalışmaya başlıyor. Bittiğinde de Alt+F4 gönderip .exe dosyasını kapatmayı istiyorum..

Ama "Enter" komutu beni yanlış anlıyor:)

Ne yapabilirim acaba?

Tekrar teşekkürler..
 
Ok, ben de 2. komutumda "(ENTER)" kullanmıştım ve çalıştırdığımda excel'e tekrar dönmüştü. Gönderdiğiniz listede ENTER'ın "return" anlamına geldiği yazıyor. Sanırım bu yüzden Excel'i tekrar açıyor..

Benim durumumda ENTER tuşuyla yapmak istediğim şey, F9'a bastıktan sonra çıkan bir mesaj kutusunu "Yes" (default değer) olarak cevaplamak. Program bu şekilde çalışmaya başlıyor. Bittiğinde de Alt+F4 gönderip .exe dosyasını kapatmayı istiyorum..

Ama "Enter" komutu beni yanlış anlıyor:)

Ne yapabilirim acaba?

Tekrar teşekkürler..

ENTER için Kodu;

Application.SendKeys "~"

Olarak kullanın.
 
Herkese çok teşekkürler.. Sorun kalmadı:)
 
Geri
Üst