Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241059 (2495)
  Suchen
 Zurück zur Übersicht
 AutorThema: writeini
Walter
Datum:28.02.02 11:35 Antwortenals Email verschicken (risikowks@web.de) 


1.) Mit writeini kann man eigene Schlüssel in die Registrierung einschreiben; funktioniert prima.

Nur ein kleinens Problem: Wie kann ich diese Einträge wieder löschen ??

2.) Nach wie vor suche ich nach einer Lösung für folgendes Drag&Drop Problem.
Einlesen von Files in eine Listbox
Addfile *.mp3 ,movelisttolist ist klar.
Die Liste zu bearbeiten , auch kein Problem.
Die Einträge mit eigenen Suchoptionen verknüpfen klappt auch.
In der Listbox steht jetzt als String der komplette Pfad mit dem Dateinamen.
Nun möchte ich aus DIESER Listbox Einträge (also in diesem Fall eine oder mehrere MP3-Dateien) per Drag&Drop in
die Playliste von Winamp ziehen, was mir nicht gelingt.
Die ausgewählten Strings müssen also für einen Drag&Drop Export
deklariert bzw. freigegeben werden.
Falls es hierfür keine Möglichkeit gibt, wäre das auch schon eine Aussage mit der ich umgehen kann.

Habe jetzt ca. 60 Stunden mit diesem Problem gekämpft, und aufgegeben.

frohes Tastenhacken wünsche ich noch
Walter

Bisher muss ich Umwege über die Zwischenablage machen, was
natürlich nicht professionell ist sondern nur ne Krücke.


Alexander Schönfeld
Datum:28.02.02 12:18 Antwortenals Email verschicken (alexander.schoenfeld@chronologic.de) 


Hallo Walter !

leider kann ich dir nur zu deinem ersten Problem helfen:
Wie immer kann ich nur auf Pascal's Beispiele verweissen :)

http://members.aol.com/pascalxd/
Profan - Infos - Registry

Mit freundlichem Gruss,
A.Schönfeld


Walter
Datum:28.02.02 12:43 Antwortenals Email verschicken  


Danke für den Link zu Problem 1.
Ich hätte nicht gedacht daß das Löschen eines Eintrages so viel mehr Aufwand bedeutet.

Wäre sinnvoll so etwas in Profan als Befehl zu implementieren.

Mit dem Problem 2 D&D hab ich bisher leider noch nie Antworten bekommen, selbst von Roland nicht.

Offensichtlich hat Profan hier eine deutliche Schwäche, was sehr bedauerlich ist.
Meiner Meinung nach ist D&D für eine Windows-Sprache absolutes Muß.

Trotzdem Danke erstmal, nun kann ich getrost in die Registrierung einschreiben, und die Einträge auch wieder austragen, also echtes deinstallieren.



SB
Datum:01.03.02 03:05 Antwortenals Email verschicken (Stephan@Ballmer.net) 


Offensichtlich hat Profan hier eine deutliche Schwäche, was sehr bedauerlich ist.
Meiner Meinung nach ist D&D für eine Windows-Sprache absolutes Muß.

Offensichtlich hast du hier eine deutliche Informationsschwäche, was sehr bedauerlich ist.
Applikationsübergreifendes Drag and Drop gibt es nur mit OLE und da auch nur mit oberheavy Problemen, die es allen Sprachen
schwer machen. Schon mal überlegt, warum fast nur M$-Appz das standardmäßig drin haben?

SB


Uwe ''Pascal'' Niemeier
Datum:03.03.02 15:26 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Hallo Leute!

Eine Möglichkeit wäre die Simulation von Drag & Drop per Message.
Die Übergabe von Parametern an eine laufende Anwendung ist dadurch eigendlich
recht simpel. Das Problem ist, das Ganze ansprechend in die Benutzerführung
einzubauen. Eine Möglichkeit dazu wäre dies:
http://www.tomcatsoft.de/DragDropDemo1.prf

@Walter: Mit MP3 und WinAmp klappt es auch ;-)

BTW: Per OLE wäre das eleganter und vielseitiger zu lösen, aber dafür braucht man
ein "Data Transfer Object", das die notwendigen Interfaces unterstützt. Aber wo
kriegt man das her??
In anderen Programmiersprachen ist sowas anscheinend schon eingebaut
(z.B. in VC++: COleDataSource). Kann man sowas nicht irgendwie unter Profan nachbilden??

SeeYou
Pascal


Walter
Datum:13.03.02 14:27 Antwortenals Email verschicken (risikowks@web.de) 


Na, Wer sagst denn: Ist zwear noch nicht elegant, aber im Prinzip funktionabel.
Für meine Version 6.6 mußte ich kleine Änderungen vornehmen.
Erst mal DANKE für die Unterstützung; werde jetzt wohl weiterkommen.
Hier der geänderte Source

'****************** Demo: Drag & Drop von Files aus Listbox 'per Message simulieren
'****************** Profan² 7.x
'****************** © by TCS (Uwe "Pascal" Niemeier) 03'2002
'****************** kleine Änderungen für Profan² 6.6
'von Walter
'****************** bei Benutzung und Weiterverwendung
'bitte Copyright von "Pascal" beachten
window 10,10-250,300
'usermessages 16'---Beenden abfangen

def WindowFromPoint(2) !"USER32", "WindowFromPoint"
def SetCapture(1) !"USER32", "SetCapture"
def ReleaseCapture(0) !"USER32", "ReleaseCapture"
def GetCursorPos(1) !"USER32","GetCursorPos"
def GetParent(1) !"USER32","GetParent"
def GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"

declare Shell$,Shell&,Liste%,Datei$
declare Pos#,Wnd&,Drop#,Temp&

dim Pos#,8
dim Drop#,200

proc Drop'-----------------------------------------------------parameters File$'----------Dateipfad (muss vollständig sein!)

GetCursorPos(Pos#)'--------Cursor-Position
wnd&=WindowFromPoint(long(Pos#,0),long(Pos#,4))'--Element-'Handle unter Cursor
Temp&=GetParent(wnd&)
while Temp&'---------------Höchste Fensterebene
'des Zielprogrammes ermitteln
wnd&=Temp&
Temp&=GetParent(wnd&)'--Höchste Ebene, wenn Parent=0
endwhile

clear Drop#'---------------DROPFILES-Struktur siehe Win32.hlp
long Drop#,0=20
string Drop#,20=File$
setfocus(wnd&)'------------Zielfenster aktivieren für Drop-Empfang
postmessage(wnd&,563,Drop#,0)'--WM_DROPFILES
endproc'---------------------------------------------------------------------------------

Shell$="Shell32"'-----------------------Handle von Shell32 für Drop-Cursor
Shell&=GetModuleHandle(addr(Shell$))
winexec("d:\Programme_Mp3\Winamp\winamp.exe",5)'---------------Beispielprogramm als Drop-Empfänger

Liste%=createlistbox(%hwnd,"",10,150,200,100)
'addstring(Liste%,"C:\CONFIG.SYS")'------Dateipfad
'muss vollständig sein! (siehe oben)
chdir "d:"
addfiles *"*.mp3"
movelisttolist (liste%)
setfocus(%hwnd)

while 1
waitinput
if %message=305'-----------------Markierten (!) Eintrag
'mit Links anklicken
useextcursor Shell&,"#1003"'--Drop-Cursor
SetCapture(%hwnd)'------------Ereignisse auch
'ausserhalb von %Hwnd empfangen
whilenot %message=7'----------warten auf Loslassen
'der Maustaste
getmessage'----------------Falls Message verpasst wird: Abfrage &Wparam
case &wparam<>1:break'-----Zusatzliche Abfrage wg. möglicher Endlos-Schleife
endwhile
Datei$=getstring$(Liste%,getcursel(Liste%))'--Dateipfad aus Liste
Drop Datei$'------------------File droppen
ReleaseCapture()'-------------Ereignisse wieder normal innerhalb von %Hwnd empfangen
usecursor 0'------------------Standart-Cursor
endif
' case %umessage=16:break

endwhile

dispose Pos#
dispose Drop#




Walter
Datum:01.07.02 15:02 Antwortenals Email verschicken (risikowks@web.de) 


Hi Alexander
Anfang des Jahres hab ich mal mit writeini und Registry gespielt,und mit dem löschen .
Du hast mich damals auf Pascals Beispiel gebracht, herzlichen Dank.
Heute befasse ich mich wieder mit dem gleichem Problem.
Pascals Routine funktioniert nach wie vor aber:
was mir damals nicht aufgefallen ist, fehlt mir da eine Info.
Mir ist nicht klar, wie festgelegt wird aus welchem Hauptschlüssel der Eintrag stammt der gelöscht werden soll.

Das Problem ist wie folgt:
HKEY_1 Software\Microsoft\Windows\Current Version\ Policies\Explorer
Hier habe ich den Schlüssel noclose=1 eingetragen, und werde ihn per Software nicht wieder los.
'Eintragen des Schlüssel
WriteIni "HKEY_1","Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", \
"noclose" =1

def @RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA"
def @RegDeleteValue(2) !"ADVAPI32","RegDeleteValueA"
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"

declare Handle#
dim handle#,4

declare Key#
dim Key#,100
string Key#,0="Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\" ' Pfad des Zielschlüssels

declare name#
dim Name#,100
string Name#,0="Zeichenfolge" ' Name des zu löschenden Wertes

print @RegOpenKeyEx($80000002,Key#,0,1,Handle#)
print @RegDeleteValue(@Long(Handle#,0),Name#)
print @RegCloseKey(@Long(Handle#,0))

dispose Handle#
dispose Key#
dispose Name#

Schätze mal, Das Geheimniss liegt bei
print @RegOpenKeyEx($80000002,Key#,0,1,Handle#),
wobei $80000002 HKEY_0 ist ( Denke ich)
Leider kriege ich keinen Kontakt mit Uwe (Pascal)

Kennt jemand die Lösung ??


Alexander Schoenfeld
Datum:01.07.02 17:03 Antwortenals Email verschicken (alexander.schoenfeld@chronologic.de) 


Hallo Walter,
hier eine kleine Übersicht :)

HKEY_0 $80000000 HKEY_CLASSES_ROOT
HKEY_1 $80000001 HKEY_CURRENT_USER
HKEY_2 $80000002 HKEY_LOCAL_MACHINE
HKEY_3 $80000003 HKEY_USERS
HKEY_4 $80000004 HKEY_PERFORMANCE_DATA
HKEY_5 $80000005 HKEY_CURRENT_CONFIG

So sollte es funktionieren (ungetestet!):
def @RegOpenKeyEx(5) !"ADVAPI32","RegOpenKeyExA"
def @RegDeleteValue(2) !"ADVAPI32","RegDeleteValueA"
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"

declare Handle#
dim handle#,4

declare Key#
dim Key#,100
string Key#,0="Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\" ' Pfad des Zielschlüssels

declare name#
dim Name#,100
string Name#,0="noclose" ' Name des zu löschenden Wertes

print @RegOpenKeyEx($80000001,Key#,0,1,Handle#)
print @RegDeleteValue(@Long(Handle#,0),Name#)
print @RegCloseKey(@Long(Handle#,0))

dispose Handle#
dispose Key#
dispose Name#

Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld

Email: alexander.schoenfeld@chronologic.de



Walter
Datum:02.07.02 09:08 Antwortenals Email verschicken (risikowks@web.de) 


SUPER NETT !!!!!
Das hilft mir kollossal !

In welchen Lektüren findet man diese Windows-Klamotten ?
Würde ich kaufen.
mfg
Walter


Alexander Schoenfeld
Datum: 02.07.02 09:53 Antwortenals Email verschicken (alexander.schoenfeld@chronologic.de) 


Hallo Walter,
eine "Lektüre" in dem sinn gibt's eigentlich nicht, das meiste muss man sich aus der Win32.hlp o.MSDN holen, bzw. aus den Profan²-Headerfiles. Es gab da auch mal APIFellow, damit hat man schön die Werte bekommen. Eine alternative wäre "More API for PROFAN²" von MS Group Software. Hier ein paar Links:

http://www.msgroup.de/profan/
http://msdn.microsoft.com/library/default.asp

Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld

Email: alexander.schoenfeld@chronologic.de


 Zurück zur Übersicht