Autor Beitrag
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.02.05 13:45 
Das DF soll natürlich auch in den Genuss meines GUID-Plugins für Proton kommen. Irgendwer hat mir erzählt, das Ding wäre sogar Phase5-kompatibel. :gruebel: Keine Ahnung. Ich brauche es nur, damit ich mir in Proton ein paar GUIDs im Format {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee} einfügen lassen kann. Dann brauche ich kein Hilfsprogramm oder gar Delphi dazu. Allerdings werden bei mir die Klammern weggelassen. Wer die braucht, kommentiert die zwei Zeilen aus, die im Quellcode markiert sind:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
(* =============================================================================

   Wenn noch kein Plugin-Ordner für Proton benutzt wird, dann einen Ordner
   anlegen und den Pfad im Registryschlüssel

           HKEY_CURRENT_USER\Software\meybohm\proton\global

   als "PLUGINDIR" eintragen. Dann die DLL in diesen Ordner kopieren, und
   der Dateiname erscheint als neuer Menüpunkt (s. auch "make.bat") und
   fügt beim Aufruf eine neue GUID ein.

   --------------------------------------------------------------------------

   Hier noch die "make.bat", die aus dem Delphiprojekt "uuidplg.dpr" die
   "&Create GUID.dll" erzeugt

            @echo off
            setlocal
            set dcc32="k:\programme\borland\delphi5\bin\dcc32.exe"

            del *.~*
            del *.cfg
            del *.dof
            del *.dll

            %dcc32% uuidplg.dpr
            ren uuidplg.dll "&Create GUID.dll"

            set dcc32=

============================================================================= *)


library createuuid;

uses
  Windows,
  ComObj;

{$E dll}


const
  INTERFACEVERSION             = 1;
  KEINE_RUECKGABE              = 0;
  RUECKGABE_ERSETZT_MARKIERUNG = 1;
  RUECKGABE_ERSETZT_EDITORTEXT = 2;


function pluginStart(Text: pchar; SelStart, SelLength: integer): pchar;
  exportstdcall;
var
  tmp : string;
begin
  tmp          := CreateClassId;

// --- auskommentieren, wenn Klammern {} gewünscht sind -->
  delete(tmp,1,1);
  delete(tmp,length(tmp),1);
// <-------------------------------------------------------

  Result       := pchar(tmp);
end;

function pluginRueckgabetyp: integer; exportstdcall;
begin
  Result := RUECKGABE_ERSETZT_MARKIERUNG;
end;

function pluginInterfaceVersion: integer; exportstdcall;
begin
  Result := INTERFACEVERSION;
end;


exports
  pluginRueckgabetyp,
  pluginInterfaceVersion,
  pluginStart;

end.

Und weil der Installer nicht fehlen darf:
ausblenden volle Höhe RegisterPlugin.vbs
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
' Register Plugin Script
' Copyright (c) 2005, Mathias Simmack
'
Dim Sh, fso
Set Sh = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")


' is Proton installed?
Dim ProtonPath, PluginPath
ProtonPath = Sh.RegRead("HKEY_CURRENT_USER\Software\meybohm\proton\global\DIR")
PluginPath = Sh.RegRead("HKEY_CURRENT_USER\Software\meybohm\proton\global\PLUGINDIR")

If ProtonPath = "" Then
  MsgBox "Proton is not installed.", vbOk + vbExclamation, "Register Plugin"
  WScript.Quit
End If

' create a plugin folder
If PluginPath = "" Then
  PluginPath = ProtonPath + "\plugins"
  fso.CreateFolder(PluginPath)
  Sh.RegWrite "HKEY_CURRENT_USER\Software\meybohm\proton\global\PLUGINDIR", _
    PluginPath, "REG_SZ"
End If

' does the folder exist?
If Not fso.FolderExists(PluginPath) Then
  fso.CreateFolder(PluginPath)
End If

' copy plugin
fso.CopyFile "*GUID.dll", PluginPath

So, fertig. :)