Autor | Thema: writeini | | Datum:28.02.02 11:35 
(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.
|
| | | Datum:28.02.02 12:43 
| |
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.
|
| | Datum:01.03.02 03:05 
(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
|
| | Datum:03.03.02 15:26 
(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
|
| | Datum:13.03.02 14:27 
(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#
|
| | Datum:01.07.02 15:02 
(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 ??
|
| | Datum:01.07.02 17:03 
(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
|
| | Datum:02.07.02 09:08 
(risikowks@web.de) | |
SUPER NETT !!!!!
Das hilft mir kollossal !
In welchen Lektüren findet man diese Windows-Klamotten ?
Würde ich kaufen.
mfg
Walter
|
| |
|