Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

sendkeys

Kompletní přehled příspěvků v tématu sendkeys řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Fojman

Poslat zprávu | Profil
Datum: 18.5. 2014 | Zobrazeno: 9838x
Konfigurace CATIA: V5R21

Text dotazu:
Dobrý den,
mám problém s příkazy spouštěnými přes StartCommand - rád bych "odklikl" okno pomocí klávesy Enter přes

SendKeys “{ENTER}”
, ale nějak mi to nefunguje. V případě kdy makro spustím přes Catii tak okno v Catii zůstane viset a makro se zastaví. Pokud to samé makro otevřu do integrovaného VB editoru a spustím ho z tohoto rozhraní tak vše proběhne v pořádku a Catia "stisk" klávesy zaznamená. Vypadá to jako kdyby při normálním spuštění byl Enter aplikován mimo okno s nabidkou Catii i když je aktivní. Používám Win7 64bit. Lze to nějak zprovoznit? Díky za rady.

Ing Jan Cinert

Poslat zprávu | Profil
[#4580] | Publikováno: 18.05. 2014 - 11:38
Problém je v tom, že makro sice pošle Enter, ale přímo formuláře vlastního makra, resp. do právě aktivního okna. Já používám VB.NET, tam je to úplně stejné. řeším to přes Win API, kdy si prostě vytáhnu okno s Catií do popředí a Enter jde přímo do Catie.

U VBA by to mělo jít v principu úplně stejně, ale jak bude přesně napsané v kódu nevím.

Příklad pro VB.NET:
Nejdřív importujeme fci z Win API
<DllImport("User32.dll")> _

Private Shared Function SetForegroundWindow(ByVal point As IntPtr) As Integer
End Function


A potom si vytáhneme okno. Je tam ještě prodleva 200ms, aby se okno stihlo otevřít. protože jinak se Enter odešle do okna co je zrovna nejvýše.
CatiaProcess = Process.GetProcessesByName("cnext").FirstOrDefault()


If CatiaProcess IsNot Nothing Then
SetForegroundWindow(CatiaProcess.MainWindowHandle)
System.Threading.Thread.Sleep(200)
SendKeys.SendWait("{ENTER}")
End If




Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.