AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fensterklasse ändern

Ein Thema von trethupe · begonnen am 26. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
trethupe

Registriert seit: 23. Sep 2007
7 Beiträge
 
#1

Fensterklasse ändern

  Alt 26. Sep 2007, 21:53
Hallo!

Nachdem ich jetzt stundenlang die Windows API Dokumentation gewälzt habe und auch Google nichts ausgespuckt hat, stell ich meine Frage hier.

Ist es irgendwie möglich die Fensterklasse eines laufenden Programms zu ändern (zB durch SendMessage, SetClassLong o.ä.) bzw die Fensterklasse vor Start des Programms zu ANDERS zu definieren?

Beispiel: Ich will dass der Editor nicht mehr als 'Notepad' sondern als Fensterklasse 'Test' gefunden wird.

Es wäre auch kein Problem wenn es bereits ein Programm gibt, welches dies schon erledigt.
Das würde mir auch sehr helfen!

Danke
trethupe
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 22:14
Hi,

imho ist Notepad nicht die Fensterklasse, sondern der Exe-Name, so ich mich nicht total irre. Benenn die Exe doch einfach mal um.

Gruß oki
42
  Mit Zitat antworten Zitat
trethupe

Registriert seit: 23. Sep 2007
7 Beiträge
 
#3

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 22:20
Danke für die Antwort.

Hab das Programm "Fensterliste" und das zeigt mir Notepad als Fensterklasse an.
Ein einfacher FindWindow Befehl funktioniert auch mit der Klasse Notepad.

Umbenennen bringt leider nichts bei dem Programm, bei dem ich gerne den Klassennamen ändern würde (schon probiert! )
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 22:38
Sorry,
dann war ich auf dem falschen Weg. Wenn mir der Name meiner Klasse nicht gefällt, benenne ich sie um und compiliere meine Anwendung neu.

Gruß oki
42
  Mit Zitat antworten Zitat
trethupe

Registriert seit: 23. Sep 2007
7 Beiträge
 
#5

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 22:40
Um das ganze mal zu konkretisieren:

Ich habe eine Java Windows Anwendung, die mir bei einem Programm automatisch einstellungen vornimmt.
Jetzt gibt es ein zweites Programm was vom Aufbau her identisch ist, d.h. ich muss nur noch mein Java Programm dazu bewegen, auch im anderen Fenster die Aktion auszuführen.

Zuerst dachte ich, dass die Java Anwendung über den Fensternamen geht,um das Fenster zu finden, dies ist leider nicht der Fall (Habe mir schnell ein kleines Tool geschrieben, mit dem ich das zweite Fenster so wie das erste nennen konnte).

Dies funktioniert aber anscheindend nicht... (Die Java Anwendung sagt: Fenster nicht gefunden).

Außerdem habe ich jetzt herausgefunden, dass die Anwendungen bei jedem Start ihre Klasse ändern, d.h. ich befürchte jetzt fast, dass das Java Programm weder über Klassennamen noch über Titel die Fenster unterscheidet.

Wie könnte das ganze noch funktionieren?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 22:50
Tut mir leid, aber ich verstehe immer weniger.
Was sind das für Programme, was tun die,wWelche Änderungen werden bei dem einen Programm warum durch das andere geändert? Und warum ist dein Programm identisch mit dem anderen?

Gruß

[edit] Oh, ich seh gerade, dass ich in der Sparte MS.NET gelandet bin. Das ist eigentlich nicht meine Baustelle Da muß wohl jemand anders helfen. [\edit oki]
42
  Mit Zitat antworten Zitat
trethupe

Registriert seit: 23. Sep 2007
7 Beiträge
 
#7

Re: Fensterklasse ändern

  Alt 26. Sep 2007, 23:09
Hallo!

Ich habe 2 ähnliche Computerprogramme (Spiele).
Für EINES der beiden hat jemand ein TWEAK tool geschrieben, das Einstellungen vornimmt.

Das TWEAK Tool will ich aber auch bei dem zweiten Spiel benutzen, allerdings erkennt das Tweak Tool, dass es nicht für das zweite Spiel programmiert wurde ("Fenster wurde nicht gefunden").

Ich wiederum will jetzt ein drittes Programm schreiben, dass dem Tweak Tool vorgaukelt das zweite Spiel sei das erste Spiel.

Da das Tweak Tool im Spiel klickt, erkennt es das Fenster anhand der Fensterklasse (wobei die bei jedem Start anders sind), des Fensternamens (hab ich schon probiert) oder einer anderen Eigenschaft. Die suche ich jetzt, um das Vorgaukelprogramm schreiben zu können...
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: Fensterklasse ändern

  Alt 27. Sep 2007, 06:31
Zitat von trethupe:
Da das Tweak Tool im Spiel klickt, erkennt es das Fenster anhand der Fensterklasse (wobei die bei jedem Start anders sind), des Fensternamens (hab ich schon probiert) oder einer anderen Eigenschaft. Die suche ich jetzt, um das Vorgaukelprogramm schreiben zu können...
Du meinst das Fenster-Handle. Die Klasse ändert sich sicherlich nicht bei jedem Start.
Das Tweak Tool wird nichts anderes machen, als sich besagtes Handle zu holen.

Das kann es entweder machen, indem es an FindWindow Klassenname und/oder Fenstercaption übergibt.
Ggf. kann man das Handle des Mainwindows auch über den Namen der Exe herausbekommen; verlass Dich also nicht darauf, dass es ausreicht, wenn Du die Caption anpasst
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Fensterklasse ändern

  Alt 27. Sep 2007, 08:18
Windows braucht die Fensterklasse, um das Fenster im System zu registrieren. Ich könnte mir vorstellen, wenn du die Fensterklasse änderst, dass dann Windows den Bezug zum Fenster verliert. Und wie man sieht bietet MSDN-Library durchsuchenSetWindowLong dies auch nicht and:
Code:
GWL_EXSTYLE
Sets a new extended window style. For more information, see CreateWindowEx.
GWL_STYLE
Sets a new window style.
GWLP_WNDPROC
Sets a new address for the window procedure.
GWLP_HINSTANCE
Sets a new application instance handle.
GWLP_ID
Sets a new identifier of the window.
GWLP_USERDATA
Sets the user data associated with the window. This data is intended for use by the application that created the window. Its value is initially zero.
The following values are also available when the hWnd parameter identifies a dialog box.
DWLP_DLGPROC
Sets the new pointer to the dialog box procedure.
DWLP_MSGRESULT
Sets the return value of a message processed in the dialog box procedure.
DWLP_USER
Sets new extra information that is private to the application, such as handles or pointers.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
trethupe

Registriert seit: 23. Sep 2007
7 Beiträge
 
#10

Re: Fensterklasse ändern

  Alt 27. Sep 2007, 11:57
Danke für eure Antworten.
Sieht dann natürlich schlecht aus für mich.

Aber die Fensterklasse ändert sich wirklich jedes mal und zwar sieht das wie folgt aus:

Die Fensterklassen der beiden Programme ist

Afx.[gefolgt von standard zahlen].[6 Stellen die bei jedem Start anders sind]

und dies ist bei beiden Spielen so.

Wenn ich die Fensterklassen nicht ändern kann, welche andere möglichkeit seht ihr dem Tweak programm was vorzugaukeln?=

edit: Kennt sich jemand mit dem Programm WinSpy aus? Damit kann man ja API Messages abfangen. Wenn das Programm nun eine Anfrage stellt um das Fenster zu finden würde man das bei WinSpy sehen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:40 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