| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: Makro Meldungsfenster im Hintergrund (10150 mal gelesen)
|
Bernd Knab Mitglied
Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 03. Mrz. 2010 09:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe seit der Umstellung auf Win7 und SWX 2010 x64 folgendes Problem: Messageboxen, die von Makros erzeugt werden, oder Forms von Makros werden nicht im Vordergrund gezeigt, sondern sind hinter anderen Fenstern "versteckt". Kennt jemand das Problem und wenn ja, gibt es einen Registry-Einstrag, der dafür sorgt, dass die Pop-Up Fenster wieder in den Vordergrund kommen? Bisher habe ich mit folgendem Registry-Eintrag unter XP den Effekt wegbekommen: [HKEY_CURRENT_USER\Control Panel\Desktop] "ForegroundLockTimeout"=dword:00000000 Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 03. Mrz. 2010 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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: 03. Mrz. 2010 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Bernd, für Makroformulare, die auf 64Bit hinter dem Hauptfenster verschwinden, gibt es in der SolidWorks Knowledgebase den Eintrag S-013887 mit Titel How to avoid a modeless VBA form is hidden behind SolidWorks window on x64?. Da hängen zwei Beispielmakros namens ModalOnX64.swp und SldWorksIsX64.swp dran, die demonstrieren, wie man die Forms wieder nach vorne bekommt. Ist leider nicht ganz trivial und so wie ich das gesehen habe auch nicht als generische Funktion vorhanden, aber immerhin ein Ansatz. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Knab Mitglied
Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 03. Mrz. 2010 11:24 <-- editieren / zitieren --> Unities abgeben:
|
Bernd Knab Mitglied
Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 05. Mrz. 2010 10:14 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe jetzt mit den beiden Tips herumgespielt. SendMsgToUser2 funktioniert problemlos. Bei den Formularen habe ich noch Probleme: Ich habe nur ein Formular im Makro. Dies wird in den Vordergrund gestellt. Wenn ich jetzt jedoch ein SendMsgToUser2 oder Msgbox aufrufe mit geöffnetem Formular wird dieses geschlossen, das ganze Makro beendet und ich lande wieder bei Solidworks. Ich habe festgestellt, dass dieser Effekt abhängig von den Windows Userrechten ist. Bei einem Standard Windows-User wird nach dem Schließen der SendMsgToUser-Box wieder das Formular vorgestellt und das Makro läuft weiter. Bei mir mit lokal Admin Rechten, wird das Makro wie oben beschrieben beendet. hat jemand eine Idee, wie ich eine Mitteilung an den User schicken kann, ohne dass ich dazu ein 2. Formular erstellen muss? Gruß Bernd [Diese Nachricht wurde von Bernd Knab am 09. Mrz. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
businessbert Mitglied Konstruktion, Projektleitung, CadAdmin
Beiträge: 225 Registriert: 30.04.2009 SolidWorks Premium 2015 SP4 - SNL Windows 7 Prof. 64-bit Intel Xeon CPU E5-1620 3.50GHz NVIDIA Quadro K4200 16GB Ram Samsung SSD SM84 512GB
|
erstellt am: 09. Jun. 2010 21:27 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Stefan, Hallo an alle, verzeiht mir dass ich diesen Thread wieder aus der Versenkung hole, aber ich blick bei den beiden Beispielen aus der Knowledgbase nicht durch... Meine bisherigen copy and paste Versuche hatten immer nur eine Auswirkung: Leider scheitert es wohl an den Grundlagen... mit meinen Lernen-durch-beobachten-API-Kenntnissen kann ich mir nicht so recht erklären wie das arbeiten sollte, bzw ich es in meine Makro-Codes einpflegen könnte. Ich poste hier mal den Code, vielleicht findet ja jemand die Zeit mir den Code etwas zu erklären und mir einen Schubs in die richtige Richtung zu geben.
Mit hoffnungsvollen Grüßen Robert
SldWorksIsX64 Modul subMain:
Zitat: Option ExplicitDim swApp As SldWorks.SldWorks Public Function SldWorks_IsX64(ByRef swApp As SldWorks.SldWorks) As Boolean Dim strExeName As String Dim lBinaryType As Long strExeName = swApp.GetExecutablePath GetBinaryType strExeName & "\sldworks.exe", lBinaryType SldWorks_IsX64 = (lBinaryType = SCS_64BIT_BINARY) End Function ---- Sub main() Dim bIsX64 As Boolean Set swApp = Application.SldWorks ' Determine whether we are running SolidWorks x64. bIsX64 = SldWorks_IsX64(swApp) Debug.Print "is x64 = " & bIsX64 End Sub
Modul Win32: Zitat: Option ExplicitPublic Const SCS_32BIT_BINARY = 0 Public Const SCS_64BIT_BINARY = 6 Public Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal sFileName As String, ByRef BinType As Long) As Long
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 02. Aug. 2010 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Da ich aktuell genau vor dem gleichen Problem mit dem "verschwundenen" Formularfenster stehe, habe ich diesen Thread aus der Versenkung geholt. Mein Wissen und Können reicht hier leider nicht mehr aus. Vielleicht könnte jemand, der Ahnung von dem Thema hat uns "Halbwissenden" einen kleinen Schubs in die richtige Richtung geben... ------------------ Viele Grüße, THSEFA Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600 ----- Win XP Prof SP 3 SW 2008 SP 5.0 PARTsolutions 8.1.08 Cideon SAP PLM 5.103.5.17 Visual Studio 2008
|
erstellt am: 02. Aug. 2010 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Bernd Knab Mitglied
Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 02. Aug. 2010 14:36 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe aus den von Stefan genannten Makros die Module Globals, Utils und Win32 in meine Makros eingebunden. Dann habe ich meine Formulare aufgerufen mit: Sub main() Dim swFrame As SldWorks.Frame Set swApp = Application.SldWorks bIsSolidWorksX64 = SldWorks_IsX64(swApp) Set swFrame = swApp.Frame hWndSolidWorks = swFrame.GetHWnd Unload FormKonvertierung FormKonvertierung.Show vbModeless End Sub Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 04. Aug. 2010 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo an alle anderen fleißigen Helfer, ich habe versucht, nach Bernd´s Anleitung unser Schriftfeldmakro zu ändern. Leider kommt jetzt eine Fehlermeldung, die ich mir nichts weiter sagt. Darf ich euch nochmal um Hilfe bitten? ------------------ Viele Grüße, THSEFA Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Knab Mitglied
Beiträge: 373 Registriert: 16.01.2001 SWX 2020 SP5.0
|
erstellt am: 04. Aug. 2010 09:27 <-- editieren / zitieren --> Unities abgeben:
|
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 04. Aug. 2010 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Bernd, ja dann läuft das Makro. Allerdings musste ich feststellen, dass es den ursprünglichen Zweck nicht erfüllt. Wenn ich morgens mein SWX starte, ist beim ersten benutzen eines Makros das entsprechende Fenster hinter dem von SWX. Erst wenn ich das SWX-Fenster verkleinere und dann das Makrofenster schließe (oder aber nach vorn hole und das Makro weiter ausführe) kann ich beim nächsten Aufrufen eines Makros sicher sein, dass das entsprechende Fenster nach vorn kommt. ------------------ Viele Grüße, THSEFA [Diese Nachricht wurde von THSEFA am 04. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 10. Aug. 2010 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Unser Support konnte uns bei dem Problem leider auch nicht viel weiterhelfen. Sie haben aber einen SPR ausfindig gemacht und uns mit eingeklinkt. Wer mag kann sich hier ranhängen, vielleicht geht´s dann ja schneller! SPR-Nr:466785 ------------------ Viele Grüße, THSEFA Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 16. Okt. 2010 00:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Da wir in unserer Firma endlich auf Windows 7 und 64bit umgestellt haben und ich einige Makros laufen habe, brauche ich unbedingt eine Lösung um die Userforms in den Vordergrund zu bringen. Da ich aber mit diesem Beitrag zu keiner Lösung kam, habe ich für mich einen gangbaren Weg gefunden um das Userform vom Makro im Vordergrund zu bringen. Und zwar starte ich als ersten Befehl im Userform unteres Makro. In diesem habe ich dann die verschiedenen Namen meiner Userforms eingefügt. Das klappt bei mir zufriedenstellend. Declare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _ ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub main() whwnd = FindWindow(vbNullString, "Ansicht drehen") Call SetWindowPos(whwnd, -1, 0, 0, 0, 0, 3) whwnd = FindWindow(vbNullString, "Schriftkopf") Call SetWindowPos(whwnd, -1, 0, 0, 0, 0, 3) whwnd = FindWindow(vbNullString, "Farben") Call SetWindowPos(whwnd, -1, 0, 0, 0, 0, 3) whwnd = FindWindow(vbNullString, "Drucken") Call SetWindowPos(whwnd, -1, 0, 0, 0, 0, 3) End Sub Hoffe konnte dem Einen oder Anderen damit helfen Gruß Winni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 16. Okt. 2010 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Winni, und herzlich Willkommen im Forum insbesondere deshalb, weil du dich als erstes gleich mit einer Hilfe statt einer Frage beteiligst. Dieses hier beschriebene Problem haben auch viele User die nicht viele Programmierkenntnisse haben, wie auch ich. Mal zum Verständnis. Muss dein Makro zuerst vor dem eigentlichen gewünschten gestartet werden oder wird es in bestehende Makros integriert? Wenn es integriert wird, könntest du vielleicht dein kpl. Makro als Anhang (z.B. Schriftkopf) hier veröffentlichen, damit der Gelegenheitsprogrammierer genau weiß, wo er deine Zeilen einfügen muss. Für weitere Hilfestellung schon mal besten Dank. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Winni-two Mitglied Ing. Maschb.
Beiträge: 154 Registriert: 12.03.2010 SW 2021 SP5 Intel Xenon W2135 @3.7GHz Win 10 64 bit Graka: Nvidia Quadro P4000 32 GB Ram
|
erstellt am: 16. Okt. 2010 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Andi Ich hoffe das mit dem Anhang klappt. Habe als Beispiel das "Ansicht Drehen" Makro beigefügt - Herzlichen Dank an http://solidworks.cad.de. Von da hab ich es und etwas für mich angepasst. Die Wichtige Stelle befindet sich im Formular ansichtDrehen: Private Sub UserForm_Initialize() Dim boolstatus As Boolean Set swApp = CreateObject("SldWorks.Application") boolstatus = swApp.RunMacro("C:\Macros\Aic_NachVorn.swp", "vv", "main") ........... Dort rufe ich das zweite Makro auf "Aic_NachVorn.swp" das mir dann das Userform Mit dem Formulartitel: "Ansicht drehen" in den Vordergrund bringt. Das mach ich so mit all meinen Macros die ein Userfom enthalten. Ich hoffe es wurde etwas klarer Gruß Winni
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 16. Okt. 2010 17:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Winni, besten Dank für deine Hilfe. Habe mir gleich deine Makros kopiert und ausgeführt, allerdings zunächst mit 2 Fehler. Erstens weil mein Pfad zu den Makros nicht stimmte den du aber vorgibst, und zweitens weil eigenartigerweise die gtswUtilities.tlb nicht gefunden wurde. Als ich dies korrigiert hatte, funktionierte deine Kombi auch bei mir. Rufe ich danach ein Macro von mir auf (noch nicht modifiziert), erscheint es sofort vor dem SW-Fenster. Es geht also nach dem Start von SW nur um den ersten Aufruf eines Macros. Kann man dein separates Makro nicht in die bestehenden Makros integrieren, um den Konflikt mit dem Pfad zu umgehen? Jeder hat doch andere Pfadverläufe. Bei uns haben wir sowohl zentral auf dem Server Makros, als auch direkt im Installationspfad von SW, um die Makros auch per Tastatur erreichen zu können. Da müsste ich das gleiche Makro in zwei Ausführungen erstellen. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
currie Mitglied Betriebsmittelkonstrukteur
Beiträge: 83 Registriert: 10.03.2005 WIN10 / SWX2020
|
erstellt am: 18. Okt. 2010 08:06 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Ich stehe vor dem gleichen Problem. Bis jetzt habe ich mir immer so geholfen. Str+Alt+Enfernen >> Task-Manager >> Anwendungen >> Makro auswählen R-Klick >> In Vordergrund. Dann ist bei mir das Makro für diese Sitzung im Vordergrund. Nach einem Neustart von Solidworks ist es wieder im Hintergrund. Die hier bereitgestellten Lösungen waren bei mir nicht erfolgreich, liegt aber an meinen VB Kenntnissen. Currie
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 18. Okt. 2010 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Zitat: Original erstellt von Winni-two: ...Hoffe konnte dem Einen oder Anderen damit helfen...
DANKE! DANKE! DANKE! PS: Das ist mal ein Einstand! Erstklassig! Die ersten U´s sind vollkommen zu Recht verdient. Mach ruhig weiter so... ------------------ Viele Grüße, THSEFA PS: Wer kann bei mir bei Druckerproblem helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 30. Dez. 2010 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo, nun hab ich vom Weihnachsmann einen neuen PC mit Win7-64bit bekommen und habe jetzt auch das Problem mit den Formularen. Der Plan von Winni geht ja ganz gut bei den Userforms. Nur bei den mit msgbox erzeugten Eingabeaufforderungen und Meldungen will das nicht funktionieren. Weiß vielleicht jemand noch einen anderen Rat dazu? Viele Grüße und kommt gesund ins neue Jahr... Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas R. Mitglied Konstrukteur,
Beiträge: 2 Registriert: 10.01.2011 SWX Office Premium 2010 x64, SP4.0 WIN7 Ultimate 64bit Intel(R)Core(TM)2 CPU 6600
|
erstellt am: 10. Jan. 2011 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Thomas5, Im folgenden findest du eine abgeänderte Variante von Winni-two Code, da bei uns mehrere Leute Makros progen brauchten wir eine Version, die man direkt aus dem Makro heraus starten konnte. Code: Option ExplicitDeclare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _ ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Dim res As Long Dim lRet As Long Global Const SWP_NOMOVE As Long = 2 Global Const SWP_NOSIZE As Long = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST As Long = -1 Global Const HWND_NOTOPMOST As Long = -2 Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() FormName.Show (False) lRet = FindWindow(vbNullString, FormName.Caption) res = SetWindowPos(lRet, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) End Sub
Wenn du dies an den Anfang in dein Makro schreibst, dann ist die Form im Vordergurnd. Hoffe geholfen zu haben. Gruß Andreas R. [Diese Nachricht wurde von Andreas R. am 10. Jan. 2011 editiert.] [Diese Nachricht wurde von Andreas R. am 08. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 13. Jan. 2011 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Andreas, Dein Code will mit der MsgBox nicht klappen, weil ja der Programmablauf bei der MsgBox anhält und auf eine Eingabe wartet. Also kommt es gar nicht zur Ausführung der nachfolgeneden Befehlszeilen und das Fenster bleibt im Hintergrund. Schade, so geht´s nicht... Vielen Dank und frohes Schaffen wünscht Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas R. Mitglied Konstrukteur,
Beiträge: 2 Registriert: 10.01.2011 SWX Office Premium 2010 x64, SP4.0 WIN7 Ultimate 64bit Intel(R)Core(TM)2 CPU 6600
|
erstellt am: 08. Feb. 2011 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Thomas5, da hast du recht, dass dieser Code nicht bei MsgBoxen funktioniert. Hier ging es auch eher um Userformen. Aber für die MsgBox versuch einmal folgendes: MsgBox "Text", vbSystemModal, "Captiontext" Dies funktioniert bei uns soweit ganz gut. Weitere Infos findest du aber auch "hier". Gruß Andreas PS: Ich habe meinen vorhergehenden Beitrag editiert, damit es nicht mehr verwirrt [Diese Nachricht wurde von Andreas R. am 08. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas5 Mitglied Konstrukteur, SWX-Admin
Beiträge: 420 Registriert: 14.07.2003 SWX2013
|
erstellt am: 09. Feb. 2011 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
uncleH Mitglied
Beiträge: 15 Registriert: 16.03.2006
|
erstellt am: 04. Mrz. 2011 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
sleeping sun6 Mitglied Technische Zeichnerin
Beiträge: 32 Registriert: 07.03.2007 SolidWorks 2009 x64 SP 4.0 Windows XP 64 Office 2003
|
erstellt am: 09. Mrz. 2011 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Zitat: Original erstellt von Andreas R.: Hallo Thomas5,Im folgenden findest du eine abgeänderte Variante von Winni-two Code, da bei uns mehrere Leute Makros progen brauchten wir eine Version, die man direkt aus dem Makro heraus starten konnte. Code: Option ExplicitDeclare Function SetWindowPos Lib "user32" _ (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _ ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Dim res As Long Dim lRet As Long Global Const SWP_NOMOVE As Long = 2 Global Const SWP_NOSIZE As Long = 1 Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE Global Const HWND_TOPMOST As Long = -1 Global Const HWND_NOTOPMOST As Long = -2 Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Sub main() [b]FormName.Show (False) lRet = FindWindow(vbNullString, FormName.Caption) res = SetWindowPos(lRet, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) End Sub
Wenn du dies an den Anfang in dein Makro schreibst, dann ist die Form im Vordergurnd. Hoffe geholfen zu haben. Gruß Andreas R. [Diese Nachricht wurde von Andreas R. am 10. Jan. 2011 editiert.] [Diese Nachricht wurde von Andreas R. am 08. Feb. 2011 editiert.][/B]
Vielen Dank für diesen Code! Das hat bei mir nun auch endlich den nervenden Fehler behoben! Grüße Susann ------------------ Viele Grüße Susann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 20. Mrz. 2011 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo auch, ich versuch mich jetzt auch mit der Integration von Andreas seinem Schnipsel in unser Schriftfeldmakro. Leider habe ich dabei Probleme, von wegen an den Anfang des Makros schreiben. Wenn ich es in schriftfeld - frmSfInfo (Code) kopiere, bekomme ich beiliegende Fehlermeldung. Wenn ich es in schriftfeld - schriftfeld1 (Code) kopiere, geht das Makro nicht mehr auf, es kommt aber auch keine Fehlermeldung. Was mache ich falsch? Für Tips schon mal Danke Schön. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielH Mitglied Dipl.-Ing. (BA) / Medizintechnik
Beiträge: 103 Registriert: 16.11.2009 Creo Elements/Pro 5.0 (M090) Win 7 64bit FX 2000 Xeon E31225 3.10GHz 8GB RAM
|
erstellt am: 21. Mrz. 2011 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 21. Mrz. 2011 19:34 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Daniel, jo, das war es, da hätte ich auch selber drauf kommen können. Besten Dank auch an alle beteiligten. Jetzt funktioniert es in SW2010 und SW2011 einwandfrei. Sag mal, würdest du dein Schriftfeldmacro kpl. hier reinstellen (oder per PM)? Ich bin nur Neugierig, was andere noch so alles einbauen. Evtl. bekomme ich noch einige Anregungen. An meinem habe ich ja auch noch etwas rumgepfriemeld. Bis denn, Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielH Mitglied Dipl.-Ing. (BA) / Medizintechnik
Beiträge: 103 Registriert: 16.11.2009 Creo Elements/Pro 5.0 (M090) Win 7 64bit FX 2000 Xeon E31225 3.10GHz 8GB RAM
|
erstellt am: 22. Mrz. 2011 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Andi, ist kein Geheimnis. Ich habe ja nur das eingebaut, was andere bereits erfunden haben (An dieser Stelle an Stefan herzlichen Dank für sein Makro und alle Anregungen durch seine Beispiele und auch an alle anderen, die in der Makrotauschbörse ihre Makros zur Verfügung stellen ). Viele Grüße, Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 03. Apr. 2011 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo auch, nachdem ich Andreas sein Schnipsel erfolgreich in mein Schriftfeldmakro integriert habe, klebt das Makro beim Öffnen links oben am Monitorrand. Obwohl das Formular bei StartUpPosition auf 1-Fenstermitte gestellt ist. Wie bekomme ich mein Fenster wieder in die Mitte? Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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: 03. Apr. 2011 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Andi, ich denke mal, die Zeile: res = SetWindowPos(lRet, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) setzt das Fenster auf 0,0. Trag da doch mal andere Werte ein. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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: 03. Apr. 2011 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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: 03. Apr. 2011 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Und nochmal: Ich hatte inzwischen eine Quelle gesehen, in der die Deklarationszeilen für die Flag-Werte folgendermaßen geschrieben waren: Public Const SWP_NOSIZE = &H1 Public Const SWP_NOMOVE = &H2 Hilft das?
Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 03. Apr. 2011 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Torsten, das mit den 0-len hatte ich vorher schon Probiert, ergibt keine Veränderung. Wenn ich deinen letzten Vorschlag wie folgt übertrage, funktioniert das Makro noch, aber es gibt auch keine Positionsänderung. Global Const SWP_NOMOVE As Long = &H2 Global Const SWP_NOSIZE As Long = &H1 Muss für das H1 bzw. H2 irgend eine Deklaration etc. stattfinden? Evtl. fällt dir noch was ein. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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: 03. Apr. 2011 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 03. Apr. 2011 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Torsten, das Makro funktioniert weiterhin, bleibt aber immer noch links oben. Egal ob ich die beiden oder alle vier 0-len verändere. Das sträubt sich aber... Gruß, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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: 03. Apr. 2011 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 03. Apr. 2011 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Hallo Torsten, mit den vorherigen Änderungen ging es noch nicht, aber als ich alles wieder rückgängig gemacht hatte, war das Fenster jetzt schön mittig. Dabei möchte ich schwören, das ich das auch schon versucht hatte......... Nun, so funktionierts, Besten Dank auch. Liebe Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 03. Apr. 2011 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Nochmal ich, und weil es so schön ist, funktioniert auch 0 - Manuell. Man muss nur entsprechende Werte bei Left und Top eingeben, dann kann beliebig positioniert werden. Schöner Sonntag heute...... Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 23. Apr. 2012 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Zitat: Original erstellt von Torsten Niemeier:
setz die startupposition mal auf 2.Gruß, Torsten
Was ist die startupposition? Bei mir funktioniert das soweit ganz gut, bis auf die Fensterpositionierung. Ich würde die Position auch lieber auf "Fenstermitte" setzen als auf einen festen Wert, hier gibt es diverse Monitorkonfigurationen. Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
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. Apr. 2012 18:27 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
Zitat: Original erstellt von Piet: Was ist die startupposition?
StartUpPosition ist eine Eigenschaft einer Userform. Üblicherweise eingestellt im Eigenschaftenfenster der Userform. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 24. Apr. 2012 10:12 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 25. Okt. 2013 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd Knab
|