Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242882 (4318)

| Suchen
| Zurück zur Übersicht

Autor | Thema: writeini
Walter
| 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.
Alexander Schönfeld
| Datum:28.02.02 12:18 (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 |
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 (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 (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 (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 (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 (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 (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 (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