
Zitat von
schöni:
[...]Mir fiel als erstes die Möglichkeit auf, dessen Funktionalität durch Plugins an eigene Bedürfnisse anzupassen. Leider hast Du kein Beispiel dazugepackt, das zeigt, wie das geht. Der Dialog zur Plugin Verwaltung ist einfach leer und ich kann auch kein Plugin installieren.[...]
Ich z.B. habe ein
Update Plugin für PlainEdit
und DevProject Manager geschrieben, was aufgrund der Ähnlichkeiten zwischen den APIs sher einfach realisieren lässt.

Zitat von
schöni:
Ist ein Plugin ne
Dll mit der gewünschten Funktionalität?
Jap

Nur mit der Endung .plg...

Zitat von
schöni:
Wie sieht die Schnittstelle aus, an die ich mich haltenmuss?
Direktlink

Zitat von
schöni:
Kann das Menü mittels Plugin's erweitert werden, um die hinzugefügten Funktionen per Menü aufzurufen?
Ich habe sogar durchgesetzt Untermenüs zu verwenden xD

Zitat von
schöni:
Wenn doch, brauch ich dataillierte Infos über die Schnittstelle.
Aus der Plugin API von PlainEdit:
Delphi-Quellcode:
function PEP_GetInfo(InfoId: DWord; var Data: WideString): DWord; stdcall;
begin
case InfoId of
PEP_GI_NAME: Data := 'MyPlugin'; // Name des Plugins
PEP_GI_VERSION: Data := '1.0.0.0'; // Versionsnummer des Plugins
PEP_GI_MENUTEXT: Data := 'MyPlugin ausführen...'; // Menütext
PEP_GI_SUBMENUS: Data := 'Item1'#13#10'Item2'#13#10'Item3';
else
Data := '';
end;
Result := Length(Data);
end;
Die Funktion PEP_GetInfo wird vom Programm nach dem Laden des Plugins aufgerufen, um Informationen über das Plugin abzufragen. Dabei wird im Parameter InfoId eine ID-Nummer übergeben, die die angeforderte Information bezeichnet. Im Parameter Data werden die angeforderten Informationen zurückgegeben. Als Rückgabewert dieser Funktion sollte eine Zahl ungleich 0 übergeben werden, wenn das Plugin die InfoId erkannt hat und Daten zurückgegeben hat. Anderenfalls muss 0 übergeben werden.
Die möglichen Werte für InfoId sind:
PEP_GI_NAME Der Name des Plugins wird angefordert.
PEP_GI_VERSION Die Versionsnummer des Plugins wird angefordert.
PEP_GI_MENUTEXT Der Text, der im Menü "Plugins" erscheinen soll wird angefordert.
PEP_GI_SUBMENUS Es werden die Namen der Untermenüs angefordert.
Existiert diese Funktion nicht, wird das Plugin nicht geladen.
Sollen Untermenüs angezeigt werden um mehrere unterschiedliche Funktionen aufrufen zu können, müssen die Namen der Untermenüs, getrennt mit Zeilenumbrüchen ("#13#10" bzw. "\r\n") übergeben werden.
Delphi-Quellcode:
function PEP_GetMenuItemHandlers(): DWord; stdcall;
begin
Result := PEP_GMIH_DOCAVAIL;
end;
Der Rückgabewert der Funktion "PEP_GetMenuItemHandlers" gibt an, wann ein Plugin im Menü verfügbar sein soll. Diese Funktion wird nur aufgerufen, sofern die Funktion "DPMP_MenuItem" exportiert wird.
Als Rückgabe werden einer oder mehrere der folgenden Werte erwartet:
PEP_GMIH_DOCAVAIL Das Plugin wird nur angezeigt, wenn ein Dokument geladen ist.
PEP_GMIH_NODOCAVAIL Das Plugin wird nur angezeigt, wenn kein Dokument geladen ist.
PEP_GMIH_ALL Das Plugin ist immer im Menü verfügbar.
In dem
SDK ist zwar kein Beispiel, aber die Vorlage dazu ist richtig gut

Besonders, weil die Funktion fast sofort klar ist

Ansonsten einfach Gaijin fragen ^^
MfG
xZise
PS: Ich weiß ich nerve, aber wie lange könnte die Implementation der einzelnenen Pluginpunkte dauern?