AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Virtueller Klick auf fremdes Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Virtueller Klick auf fremdes Fenster

Ein Thema von Andreas L. · begonnen am 14. Jan 2007 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#11

Re: Virtueller Klick auf fremdes Fenster

  Alt 17. Jan 2007, 09:05
Zitat von toms:
Der Shortcut für Start/Stop in ITunes ist die Leertaste.
Du kannst daher mal probieren, ein VK_SPACE der Anwendung zu senden.
Das funktioniert leider nicht...

Hab's mal so probiert und es scheint zu funktionieren:

Delphi-Quellcode:
uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  iTunesApp: OLEVariant;
begin
  // iTunes Objekt erzeugen
  iTunesApp := CreateOleObject('iTunes.Application');
  if not VarIsNull(iTunesApp) then
  begin
    iTunesApp.Play;
   // iTunesApp.Pause;
   // iTunesApp.Stop;
   // iTunesApp.NextTrack;
   // am Ende...
    if not VarIsNull(iTunesApp) then
      iTunesApp := Unassigned;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#12

Re: Virtueller Klick auf fremdes Fenster

  Alt 17. Jan 2007, 16:32
Zitat von toms:
Zitat von toms:
Der Shortcut für Start/Stop in ITunes ist die Leertaste.
Du kannst daher mal probieren, ein VK_SPACE der Anwendung zu senden.
Das funktioniert leider nicht...

Hab's mal so probiert und es scheint zu funktionieren:

Delphi-Quellcode:
uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  iTunesApp: OLEVariant;
begin
  // iTunes Objekt erzeugen
  iTunesApp := CreateOleObject('iTunes.Application');
  if not VarIsNull(iTunesApp) then
  begin
    iTunesApp.Play;
   // iTunesApp.Pause;
   // iTunesApp.Stop;
   // iTunesApp.NextTrack;
   // am Ende...
    if not VarIsNull(iTunesApp) then
      iTunesApp := Unassigned;
  end;
end;
Das ist ja klasse. Jetzt muss ich nur noch den aktuell abgespielten Titel bekommen... Geht das evtl. auch über dieses OleObject?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#13

Re: Virtueller Klick auf fremdes Fenster

  Alt 17. Jan 2007, 18:46
Das geht so:

Delphi-Quellcode:
function getCurrentTitle(iTunesApp: OleVariant) : string;
begin
  Result := iTunesApp.CurrentStreamTitle;
  if Result = 'then
    Result := iTunesApp.CurrentTrack.Name;
end;
Aufruf der Funktion:

Label1.Caption := getCurrentTitle(iTunesApp);
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Virtueller Klick auf fremdes Fenster

  Alt 3. Apr 2007, 09:15
Ich hab letztes Jahr geraume Zeit mit dem iTunes COM-Interface zugebracht und wollte daher mal ein paar kleine Tips einbringen:

- iTunes nimmt sich öfter mal die Freiheit, COM-Anforderungen zu ignorieren. Man sollte darauf gefasst sein, und den Aufruf ggf. nach ein paar Millisekunden Wartezeit wiederholen.

- iTunes reagiert nicht auf COM-Aufrufe wenn der User gerade in iTunes was macht, auch darauf sollte man gefasst sein und entsprechend reagieren.

- Wurde iTunes bereits über COM angesprochen, und sind COM-Events registriert, so signalisiert iTunes in der Regel "ich bearbeite jetzt erstmal keine COM-Anfragen mehr" und "ich bin jetzt wieder verfügbar". Es gab allerdings auch schon iTunes-Versionen in denen das kaputt war

- Wurden COM-Events registriert, so scheint es nicht mehr möglich zu sein, die eigene Applikation sauber von iTunes abzukoppeln. Ob das bei den aktuellen Versionen immer noch so ist, müsste ich mal ausprobieren, im letzten Quartal 2006 wars auf jeden Fall noch so und hat mich einige graue Haare gekostet, weil das einzige was reproduzierbar ohne irgendwelche Crashes ging, ein "iTunesApp.Quit;" war
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#15

Re: Virtueller Klick auf fremdes Fenster

  Alt 29. Feb 2008, 19:49
Hallo,

ich habe bei mir aus dem oben genannten Beispiel folgendes gebastelt:
Delphi-Quellcode:
unit uItunes;

interface
  uses
     ComObj; //Itunes Com Port

  type
    tItunes = Class(tObject)
      public
        function getItunesVol: longint;
        function getCurrentTitle : string;
        Constructor Create;
        destructor free;
      protected

      private
       iTunesApp : OleVariant;

  end;

implementation

Constructor tItunes.Create;
  begin
    iTunesApp := CreateOleObject('iTunes.Application');
  end;

destructor tItunes.free;
  begin
    iTunesApp := Unassigned;
  end;

function tItunes.getItunesVol: longint;
  begin
    Result := iTunesApp.SoundVolume;
  end;

function tItunes.getCurrentTitle : string;
  begin
    Result := iTunesApp.CurrentTrack.Name + ' - ' + iTunesApp.CurrentTrack.artist;
  end;

end.
wenn ich auf dies nun zugreifen möchte erhalte ich die Meldung, das der Coinitialize nicht gefunden wurde. Nach ner weile goolgen und lesen habe ich erfahren, dass ich irgendwie OEVariants oder so iregndwie nach dem Com unterordnen muss aber schlau werde ich daraus nicht.

Auch dachte ich, den Fehler umgehen zu könne, indem ich das in eine eigene Unit packe aber diese Hoffnung wurde dann auch zerstört.

kann mir jemand sagen, wie ich die Applikation schreiben muss, damit ich von aussen über getCurrentTitle und getItunesVol an verschiedenstellem im Ausgangsprogramm zugriffbekomme, ohne ständig irgendwelche Zugriffs- und Coinitializefehler zu produzieren?
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#16

Re: Virtueller Klick auf fremdes Fenster

  Alt 2. Mär 2008, 11:37
nun ja jetzt habe ich eine möglichkeit gefunden, wie ich die Itunes Daten im Mainprog an einer Stelle nur auslese, somit hab ich das Problem mit Coinitialize umgangen. aber das Gelbe vom Ei ist es irgendwie noch nicht wirklich.

Grüße
Killerregenwurm
  Mit Zitat antworten Zitat
Douglas Quintaine
(Gast)

n/a Beiträge
 
#17

Re: Virtueller Klick auf fremdes Fenster

  Alt 24. Aug 2009, 07:34
Die eigentliche Frage ist noch immer offen: Wie kann ich virtuelle Klicks ausführen, ohne das der User den Cursor hin und her wandern sieht?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Virtueller Klick auf fremdes Fenster

  Alt 24. Aug 2009, 07:43
Zitat von Killerregenwurm:
kann mir jemand sagen, wie ich die Applikation schreiben muss, damit ich von aussen über getCurrentTitle und getItunesVol an verschiedenstellem im Ausgangsprogramm zugriffbekomme, ohne ständig irgendwelche Zugriffs- und Coinitializefehler zu produzieren?
Wie wäre es mit

[url=http://msdn.microsoft.com/en-us/library/ms678543%28VS.85%29.aspx]CoInitialize(nil)[/url] z.B. im initialization-Abschnitt deiner ausgelagerten Unit.

Dürfte doch bei deiner Suche auch bei jedem zweiten Post angemerkt worden sein.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz