AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi In SaveDialog anderer Anwendung werte ändern nonVCL
Thema durchsuchen
Ansicht
Themen-Optionen

In SaveDialog anderer Anwendung werte ändern nonVCL

Ein Thema von ts_abc · begonnen am 10. Jan 2006 · letzter Beitrag vom 23. Apr 2006
Antwort Antwort
ts_abc

Registriert seit: 22. Sep 2003
20 Beiträge
 
Delphi 10 Seattle Professional
 
#1

In SaveDialog anderer Anwendung werte ändern nonVCL

  Alt 10. Jan 2006, 06:17
Hallo,

habe folgendes Problem, öffne ein Programm, öffne dort den SaveDialog editiere Dateiname und Typ. Ich habe dafür diesen Quelltext verwendet nur übernimmt der SaveDialog die Änderungen nicht. Wo könnte da der Fehler liegen?

Delphi-Quellcode:
var tmpDlg, tmpDlgI: HWND; t: array[0..MAX_PATH] of Char; SPs2: String;
...
tmpDlg := FindWindow('#32770', 'Save Extended Bitmap');
if tmpDlg > 0 then begin
  tmpDlgI := GetDlgItem(tmpDlg, 1152);
  if tmpDlgI > 0 then begin
    StrCopy(t, PChar(SPs2));
    SendDlgItemMessage(tmpDlg, 1152, WM_SETTEXT, 0, Integer(@t));
    SendDlgItemMessage(tmpDlg, 1152, EM_SETMODIFY, Integer(True),0);

    t := 'DXT3';
    tmpDlgI := GetDlgItem(tmpDlg, 1136);
    SendDlgItemMessage(tmpDlg, 1136, CB_SELECTSTRING, -1, Integer(@t));
    PostMessage(tmpDlg, WM_COMMAND, makewparam(1136,CBN_SELCHANGE), Integer(@tmpDlgI));

    PostMessage(tmpDlg, WM_COMMAND, makewparam(1,BN_CLICKED), 0);
  end; // Items end
end; // Dlg end
...
Gruß Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: In SaveDialog anderer Anwendung werte ändern nonVCL

  Alt 21. Apr 2006, 12:00
Ich sende mit folgendem Code einen text an ein Edit diesem Dialog.

SendMessage(tmpDlgI, WM_SETTEXT, 0, LongInt(PChar(SPs2))); oder war's
SendMessage(tmpDlgI, WM_SETTEXT, Length(SPs2), LongInt(PChar(SPs2))); Aber mal 'ne Frage, wo hast'n die ID her, bin selber gerade auf der Suche danach.
$2B or not $2B
  Mit Zitat antworten Zitat
ts_abc

Registriert seit: 22. Sep 2003
20 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: In SaveDialog anderer Anwendung werte ändern nonVCL

  Alt 22. Apr 2006, 15:27
Hallo himitsu,

Die Resursen des SaveDialog, OpenDialog usw. befinden sich in der Datei comdlg32.dll dort bekommst die ID's dann her.

Was den Fehler betrifft der dürfe nicht hier in den oberen Zeilen liegen:
SendDlgItemMessage(tmpDlg, 1152, WM_SETTEXT, 0, Integer(@t)); da die Datei nachher auch unter dem Dateinamen gespeichert wird der im Edit eingetragen wurde.

Ich würde sagen der Fehler müsste hier in diesen Zeilen sein:
Delphi-Quellcode:
SendDlgItemMessage(tmpDlg, 1136, CB_SELECTSTRING, -1, Integer(@t));
PostMessage(tmpDlg, WM_COMMAND, makewparam(1136,CBN_SELCHANGE), Integer(@tmpDlgI));
Der Eintrag DXT3 wird zwar in der Klappliste übernommen aber der Opendialog bemerkt die Änderung nicht und speichert unter dem Format was nach dem öffnen des Dlg's ausgewählt war.

Hatte es zwischenzeitlich anders gelöst und zwar mit Mouse Events. da ich eine menge Dateien in einem Anderem Dateiformat speichern musste. Nur sollte man dann die Maus nicht mehr bewegen am Bildschirm.

Wäre echt gut wenn mir jemand noch sagen könnte wo da der Fehler liegt.

Gruß Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: In SaveDialog anderer Anwendung werte ändern nonVCL

  Alt 23. Apr 2006, 19:42
Also ich sende per (hab nachgeguckt):
Delphi-Quellcode:
S=String

SendMessage(H, WM_SETTEXT, 0, Integer(S));
Was dein Auswahl angeht:
Ich kenn mich leider noch nicht so mit ComboBoxen aus ... mine eigene ComboBox sieht ja noch nichtmal wie eine ComboBox (nonVCL) aus.
(das rechte/unter Eingabefeld im SaveDialog - anderer Thread)
Aber zumindestens hatte ich jetzt auch schon selber die ID's rausbekommen (steht auch drüben)

Aber soweit ich weiß, wird das ausgewählte sofort in die TOpenFilename-Struktur eingetragen,
es wird also nicht erst am Ende ausgelesen, daher geh ich mal davon aus, daß du zwar den wert änderst, aber keine Änderungsbotschaft an den Explorer-Hook gesendet wird.
Ich würde also mal empfehlen, daß u nachsiehst, welche Änderungsmitteilung gesendet wird, nachdem in User die Einstellung im Feld ändert,´dann bräuchtest du doch nur noch diese Nachricht selber senden, nachdem du den Text geändert hast.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 12: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