• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Apfel-TAB switching programmiert

Yeti

Gast
Hallo,

ich würde gerne "im Coding" (Cocoa/Carbon) ein Apfel(Command)-Tab auslösen. Es soll also ein Applikation-Switch erfolgen. Irgendeine Idee in welche Richtung ich da Suchen muss?

Danke schonmal und viele Grüsse,
Michael
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Hi Yeti,
so sollte das gehen (ApplicationServices):

CGPostKeyboardEvent (0, (CGKeyCode)55,TRUE);
CGPostKeyboardEvent (0,(CGKeyCode)48, TRUE);
CGPostKeyboardEvent (0,(CGKeyCode)48, FALSE);
CGPostKeyboardEvent (0, (CGKeyCode)55,FALSE);

Grüße,

D.
 

Yeti

Gast
Hallo Daisy,

funktioniert prima! Danke!

Gruss,
Yeti
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Ich weis ja nicht in welcher "Sprache" Du das "was" programmieren willst, aber es gibt deutlich bessere Wege um von einem Programm auf ein anderes zu wechseln als Tasteneingaben zu simulieren.
Gruß Pepi
 

Yeti

Gast
Ich weis ja nicht in welcher "Sprache" Du das "was" programmieren willst, aber es gibt deutlich bessere Wege um von einem Programm auf ein anderes zu wechseln als Tasteneingaben zu simulieren.
Gruß Pepi

"Sprache" siehe oben: Cocoa/Carbon. Ich habe versucht einen guten Weg zu finden und bin leider gescheitert. Ideen waren Nachrichten an das Dock zu schicken o.ä.. Der Weg den Daisy gezeigt hat funktioniert, wenn Du noch weitere Alternativen kennst lerne ich gerne dazu, nur her damit! :)

In dem Zusammenhang war ich auch auf der Suche nach einer kompletten NS*-Klassen und Funktionsübersicht. Konnte leider aber weder online noch in diversen Büchern nichts finden!? Kennt/hat jemand sowas?

Viele Grüsse,
Yeti
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Weder Cocoa noch Carbon sind Sprachen sondern es sind Frameworks. Ich weis noch immer nicht ob Du diese nun in Objective-C, Java, AppleScript oder auch Python programmierst.

Dokumentation:
Wirf mal einen Blick in die ADC Reference Library auf Deiner Platte.
Mit AppKiDo hast Du auch eine Cocoa API Referenz.
Alternativ Cocoa Browser mit dem neuen Beta Widget Zusatz.
Gruß Pepi
 

Yeti

Gast
Hallo Pepi,

Weder Cocoa noch Carbon sind Sprachen sondern es sind Frameworks. Ich weis noch immer nicht ob Du diese nun in Objective-C, Java, AppleScript oder auch Python programmierst.
Korrekt und richtig, da bin ich wohl zu sehr den Standardsprachen verhaftet, dass mir die anderen Möglichkeiten nicht in den Sinn kamen - mein Fehler. Sprachen in dem Projekt für das ich die Funktionalität brauche sind Objective-C, C, C++.
Allerdings ist mir nicht ganz klar welche Relevanz die Sprache bei der Lösung meines Problems hat, ausser, dass ich ggf. aus Java nicht alle Cocoa APIs nutzen kann... sollte es dies sein, dann bin ich wohl auf der sicheren Seite ;). Ok, das Coding sieht dann auch noch anders aus je nach Sprache... aber mir würden sogar schon Hinweise auf die entsprechenden APIs reichen :)

Also wenn Du eine elegantere Lösung (ggf. in Objective-C) hast, wäre ich sehr daran interessiert.


Dokumentation:
Wirf mal einen Blick in die ADC Reference Library auf Deiner Platte.
Mit AppKiDo hast Du auch eine Cocoa API Referenz.
Alternativ Cocoa Browser mit dem neuen Beta Widget Zusatz.
Gruß Pepi

Die Refrenz bietet IMHO keinen guten Überblick - eben eine Referenz. Bisher hat sie ja auch immer prima gereicht (mit hilfe von google, dem SampleCode-Archiv, cocoadev, ...). Eine thematisch sortierte Liste mt allen Klassen und ein Satz als Beschreibung ist das wonach ich gesucht habe. Der Cocoa Browser kommt dem schon sehr nahe. Danke für den Tipp!

Viele Grüsse,
Yeti
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Hi Yeti,

fertigen Code habe ich leider nicht, aber ich denke, mit dem Process Manager solltest du weiterkommen. Processes.h bietet dazu folgendes:

mit GetNextProcess() kannst du dir eine Liste aller laufenden Prozesse basteln (Liefert die ProcessSerialNumber - als Anfangswert kNoProcess übergeben und für das Ende auf procNotFound testen ...)

Mit GetCurrentProcess() und SameProcess() kannst du dann feststellen, wo dein Prozess in der Liste ist. (Wenn dein Programm frontmost ist, dann nehme ich an, am Ende) ...

und mit SetFrontProcess() holst du dann den gewünschten (nächsten) Prozess nach vorne.

Ich hoffe, das klappt so - wie gesagt, ausprobiert habe ich's nicht. Aber vielleicht hat Pepi ja was Besseres/Einfacheres/Fertiges ;)

Grüße,

Daisy