Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Sendkeys funktioniert nicht

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Mit komplexer Geometrie und organischen Formen arbeiten
Autor Thema:  Sendkeys funktioniert nicht (4091 mal gelesen)
Micha79
Mitglied
Stuttgart

Sehen Sie sich das Profil von Micha79 an!   Senden Sie eine Private Message an Micha79  Schreiben Sie einen Gästebucheintrag für Micha79

Beiträge: 5
Registriert: 16.09.2013

erstellt am: 16. Sep. 2013 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

wir benutzen Solidworks 2012(64bit)auf Win7 mit Keytech. Nun möchte ich über Sendkeys die Tasten "STRG+S" aufrufen. Diese Kombination startet den Speicherdialog mit Keytech. Wenn ich das Programm aus dem Visual Basic Editor direkt starte funktioniert das auch. Starte ich das Programm jedoch aus der Makro Symbolleiste etc. dann wird Sendkeys nicht ausgeführt.

Als Alternative habe ich versucht über die Funktion Keybd_event das ganze zu machen. Damit funktioniert es auch aber nur wenn der Befehl ganz am Ende vom Programm steht. Kommt im Anschluss z.B. noch eine Messagebox etc. dann gehts schon wieder nicht. Dann sieht es so aus wie wenn der Keybd_event Befehl quasi in der Pipeline steht und erst nach beenden der Messagebox oder Programmabruch ausgeführt wird.
Bin langsam mit meinem Latein am Ende.
Auch 8h googeln haben nicht weitergeholfen. Bin ziemlich frustriert.

Gibt es eventuell eine Möglichkeit die Befehle der Untermenüs direkt aufzurufen? Denke da in Richtung wm_command und sendmessage. Problem damit ist dass ich die wm_command nicht auslesen kann da die meißten Programme wie Spy++ nur 32bit unterstützen. Und selbst dann bleibt die Frage wie das funktioniert wenn keine BN_Clicked oder sowas gemeldet wird.

Bin um jeden Rat mehr als Dankbar!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



Sehen Sie sich das Profil von Torsten Niemeier an!   Senden Sie eine Private Message an Torsten Niemeier  Schreiben Sie einen Gästebucheintrag für Torsten Niemeier

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 17. Sep. 2013 00:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 17. Sep. 2013 08:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich


26221_sendkeys-fenster-aktivieren.png

 
Hallo Micha,

und herzlich willkommen im SolidWorks Brett auf CAD.de 

Icvh würde zunächst mal versuchen bei Keytech nachzufragen, wie du denn deren Speicherdialog aus deinem Makro heraus aufrufen kannst. Da sollte es ja über deren DLL eine entsprechende Routine geben, die du aufrufen kannst - wenn die öffentlich ist.

Zum Problem mit dem Sendkeys: hast du vorher das SolidWorks Fenster auch aktiviert, damit die gesendeten Befehle auch in dem Fenster ankommen. Ich hab meine 2012 64 Bit auf Windows 7 ausgegraben und dieses kleine Sendkeys-Beispiel gemacht, dass den normalen "Speichern unter ..." Dialog aus dem Dateimenu aufruft:

Code:
Sub main()

    AppActivate "SolidWorks Premium 2012"
    SendKeys "%dö", True
   
End Sub



Das ist das ganze Makro, funktioniert sowohl aus dem VBA-Editor als auch per Extras/Makros/Ausführen oder als Makroknopf im Befehlsmanager. Wie dein SolidWorksfnster heißt (oder zumindest vom Namen her anfängt) kannst du am einfachsten im Taskmanager sehen. Da gibt es bestimmt auch irgendwelche Wege das per Windows APIs rauszubekommen, das man das nicht hart verdrahten muss, aber so weit hab ich es nie weiter verfolgt.

Ciao,
Stefan

PS: wenn das klappt stell doch die Lösung (oder einen hierher) auch bitte in deinem Doppelposting im VB-Brett rein, damit dass da nicht offen bleibt, falls noch mal jemand danach sucht.

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Micha79
Mitglied
Stuttgart

Sehen Sie sich das Profil von Micha79 an!   Senden Sie eine Private Message an Micha79  Schreiben Sie einen Gästebucheintrag für Micha79

Beiträge: 5
Registriert: 16.09.2013

erstellt am: 17. Sep. 2013 19:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für die Tipps! Leider geht das bei mir nicht so einfach. Habe den gleichen Code auch mit AppActivate "SolidWorks Premium 2012" davor schon ausprobiert. Glaube auch nicht das es am Fenster Fokus liegt. Sonst würde der Code ja aus dem Editor direkt gestartet ja denke ich auch nicht gehen. Wie gesagt wenn ich den Code aus dem Editor starte alles Prima. Wenn ich über die Makro-Leiste den Code starte tut sich nichts! Woran könnte das noch liegen. Und woran liegt es das keybd_event nur wenn nichts danach kommt, wie schon beschrieben funzt. Die Idee mit "DoEvents" hatte ich auch schon macht aber keinen Unterschied, sowohl bei sendkeys als auch bei keybd_event.
Hat noch jemand ne Idee?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



Sehen Sie sich das Profil von Torsten Niemeier an!   Senden Sie eine Private Message an Torsten Niemeier  Schreiben Sie einen Gästebucheintrag für Torsten Niemeier

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 17. Sep. 2013 21:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich

Nur zur Sicherheit:
Du hast den Wait-Parameter doch auf True, oder?

Wenn ja: Manchmal soll ein Sleep-Befehl hinter dem DoEvents schon geholfen haben.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 18. Sep. 2013 07:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Micha79:
Habe den gleichen Code auch mit AppActivate "SolidWorks Premium 2012" davor schon ausprobiert. Glaube auch nicht das es am Fenster Fokus liegt. Sonst würde der Code ja aus dem Editor direkt gestartet ja denke ich auch nicht gehen.

Bist du dir sicher, dass dein Fenster so heißt? Hast du mal ein neues Makro gemacht nur mit dem Code von mir drin? Hast du im Taskmanager nachgeschaut, dass dein SolidWorks wirklich so heißt? Hast du mal den Trick über die Messagebox vorher probiert (siehe mein uraltes Tutorial auf http://solidworks.cad.de/apitut_kap01.htm )? Das der Code aus dem Editor klappt und aus SolidWorks heraus nicht hab ich auch schon erlebt, das hat aber nichts mit Glauben zu tun, sondern mit Testen 

Wenn es so nicht klappt kann ich zumindest dir auch nicht weiterhelfen; das jetzt mehrere Ansätze zu diesem Thema auch nach Sendkeys funktioniert nicht in VB-Brett verstreut sind macht es auch nicht leichter, was wieder zu finden ...

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Micha79
Mitglied
Stuttgart

Sehen Sie sich das Profil von Micha79 an!   Senden Sie eine Private Message an Micha79  Schreiben Sie einen Gästebucheintrag für Micha79

Beiträge: 5
Registriert: 16.09.2013

erstellt am: 23. Sep. 2013 19:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Also, da ich letzte Woche im Urlaub war und nicht testen konnte hier mal mein Zwischenstand. Habe exakt das probiert was du gesagt hast. Und wie schon bereits erwähnt geht das auch wenn ich den Code im Visual Basic Editor starte. Geht aber nicht wenn ich ihn über die Makro Leiste starte. Da bleibt er stehen und das wars. Habe auch mal zwischen zwei Anwendungen hin und her geschalten mit AppActivate in Kombination mit Sleep. Ich sehe das die andere Anwendung Aktiv wird und danach wieder Solidworks. Was übrigens verwunderlich ist, das in der anderen Anwendung das Sendkeys funktioniert. Also scheint irgendwas an Solidworks faul zu sein.
Es tut mir übrigens leid das ich das VB-Forum erst nach dem Beitrag gesehen habe, war mir eben nicht sicher wo sich die Experten tummeln deshalb der zweite Beitrag.
Komme mir aber schon etwas dumm dargestellt vor. Es ist nicht so dass ich keine Ahnung vom Programmieren habe und bin bisher auch immer mit Google auf Lösungen gestoßen gerade auch hier im Forum.
Ich hoffe immer noch dass irgendjemand hier das gleiche Problem hat, oder mir einen Tipp geben kann wie ich direkt Menübefehle ausführen könnte, jedoch nicht die von Solidworks da gibts ja n Befehl für...

Beste Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



Sehen Sie sich das Profil von Torsten Niemeier an!   Senden Sie eine Private Message an Torsten Niemeier  Schreiben Sie einen Gästebucheintrag für Torsten Niemeier

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 23. Sep. 2013 21:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich



Produktmanager* für Maschinenbau

BAADER ist mit mehr als 1.600 Mitarbeitenden weltweit der Partner für Lebensmittel­verarbeitungs­lösungen und in mehr als hundert Ländern auf sechs Kontinenten aktiv.

Bei uns erwarten Sie vielfältige Tätigkeitsfelder, von der Entwicklung und Herstellung von Spezial­maschinen und Lösungen für die Verarbeitung von Fisch, Geflügel und Fleisch über Vertrieb, Projektierung und Installation bis hin zu unterstützenden Büro­funktionen, Service und After-Sales....

Anzeige ansehenProduktmanagement
StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 24. Sep. 2013 08:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Micha79 10 Unities + Antwort hilfreich

Hallo Micha79,

Zitat:
Original erstellt von Micha79:
Komme mir aber schon etwas dumm dargestellt vor.

Das war nicht meine Absicht. Aber wir können nicht auf deinen Bildschirm schauen, du stellst weder ein Video noch dein Beispielmakro zum Testen zur Verfügung und du hast noch keine Beitragshistorie hier im Brett, aus der wir erkennen könnten, ob du blutiger Anfänger, fortgeschrittener Amateur oder erfahrener Programmierer bist.

Da du am Anfang davon gesprochen hast, das du den Speicherndialog von Keytech, einem Zusatzprodukt, per Sendkeys aufrufen möchtest wollte ich mit dem ersten Beispiel erst mal sichergestellt haben, ob es vielleicht daran liegt, dass es eben keine SolidWorks Funktion ist und die einfach nur nicht weitergereicht wird. Ich kann bei mir z.B. zwar SolidWorks und z.B. auch das Photoview-Addin per Sendkeys im Menu steuern, aber nicht das SAP-PLM-Addin. Deswegen das Beispiel mit dem Öffnen des SolidWorks Dialogs.

Das Beispiel ist mit seinen 2 Zeilen recht überschaubar, klappt bei mir auf mehreren Rechnern unter Windows 7/64 mit SW2012 und Sw2013 nach der entsprechenden Anpassung wegen des Fensternamens. Wenn das bei dir nicht funktioniert muss es an einem der beiden Zeilen liegen oder die ganze Sendkeys-Klamotte funktioniert bei dir anders als bei mir. Ich habe verstanden, dass mein Beispiel mit dem normalen Datei-Öffnen-Dialog bei dir funktioniert, wenn du es aus dem VBA-Editor startest, aber (im Gegensatz zu meiner Umgebung) nicht, wenn du es als Makroknopf aufrufst. Du hast überprüft, dass das richtige (SolidWorks)Fenster aktiviert wird, aber bei dir landen die gesendeten Tastendrucke ALT-D ö dann nicht bei SolidWorks, sondern irgendwo.

Ich glaub dir das alles, kann es aber weder reproduzieren noch nachvollziehen. Daher die Rückfrage.

Zitat:
Original erstellt von Micha79:
Ich hoffe immer noch dass irgendjemand hier das gleiche Problem hat, oder mir einen Tipp geben kann wie ich direkt Menübefehle ausführen könnte, jedoch nicht die von Solidworks da gibts ja n Befehl für...

Da würde ich mich an den Support von Keytech wenden, vielleicht gibt es ja eine offizielle Schnittstelle zu deren Addon oder zumindest einen ansprechbaren API Call.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz