Seite 6 von 12
Re: PB.Ex Mail (Windows)
Verfasst: 17.05.2019 20:40
von RSBasic
PB.Ex Mail 1.0.9.0 wurde veröffentlicht.
Changelog:
- Geändert: @Output$: Wenn 0 übergeben wird, dann wird als Rückgabewert der jeweiligen Funktion die benötigte Länge für die Allokierung des Speichers zurückgegeben.
@HeX0R
Ah ok, danke für die Information.
Re: PB.Ex Mail (Windows)
Verfasst: 17.05.2019 21:30
von Bisonte
RSBasic hat geschrieben:PB.Ex Mail 1.0.9.0 wurde veröffentlicht.
Changelog:
- Geändert: @Output$: Wenn 0 übergeben wird, dann wird als Rückgabewert der jeweiligen Funktion die benötigte Länge für die Allokierung des Speichers zurückgegeben.
Also verstehe ich das so dann richtig ?
Code: Alles auswählen
; Erst Grösse ermitteln
Length = MailDirectoryEntryNameEx(ID, #Null, @ErrorOutput$)
; Speicher reservieren
*Output = AllocateMemory(Length)
; Nochmal um den Puffer zu füllen
Result = MailDirectoryEntryNameEx(ID, *Output, @ErrorOutput$)
Re: PB.Ex Mail (Windows)
Verfasst: 17.05.2019 21:32
von RSBasic
Genau
Re: PB.Ex Mail (Windows)
Verfasst: 17.05.2019 22:02
von Nino
HeX0R hat geschrieben:Das ist dann eher eine Eigenart von Thunderbird, das brauchst Du so natürlich nicht zu unterstützen.
Ich muss jetzt nur noch herausfinden wieso der TB das so macht, früher hat er das definitiv nicht so gehandhabt.
Das diesbezügliche Standard-Verhalten von Thunderbird (aktuelle Version 60.6.1) hängt ab von der Einstellung unter
Extras > Einstellungen > Verfassen > Allgemein > Nachrichten weiterleiten
Man kann das aber auch für jede weitergeleitete Mail individuell wählen mittels
Nachricht > Weiterleiten als
Re: PB.Ex Mail (Windows)
Verfasst: 24.06.2019 21:08
von HeX0R
Ich habe noch keinen Rechner gefunden, wo kein .NET 4.5 installiert war, daher mal die Frage vorab:
Wie genau wird sich das denn verhalten, wenn der User es nicht installiert hat?
Habe mir ne Erkennungsroutine für .NET 4.5 gebastelt, jetzt frage ich mich nur an welcher Stelle ich die aufrufen muss, um komischen Fehlermeldungen vorzubeugen.
Oder steckt in der DLL sowas auch schon drin?
Re: PB.Ex Mail (Windows)
Verfasst: 25.06.2019 19:27
von RSBasic
Um sicherzustellen, habe ich in einer Test-VM .NET Framework 4.5 deinstalliert und mit der DLL-Datei getestet.
Es schlägt natürlich fehl. D.h. die Anwendung mit der DLL-Datei stürzt gemeinsam ab.
Ich habe danach eine Test-DLL-Datei mit einer einfachen Funktion, die nur eine Zahl zurückgibt, aber nicht direkt auf eine .NET-Methode zugreift, getestet, aber wie ich vermutet habe, stürzt das eigene Programm ebenfalls ab.
D.h. meine DLL-Datei ist nicht in der Lage, rechtzeitig selber zu prüfen, ob .NET 4.5 installiert ist. Das ist etwa genauso wie, wenn eine 64 Bit-Anwendung auf einem 32 Bit-System prüfen möchte, ob es ein 64 Bit-System ist. Die Abfrage kommt einfach zu spät, da schon der Startpunkt in der DLL-Datei schon .NET 4.5 ist.
Deshalb ist es nur in deiner eigenen Anwendung möglich, auf installierte .NET-Version vorher zu prüfen und wenn kein .NET 4.5 installiert ist, dann darf keine einzige Funktion aus der DLL-Datei ausgeführt werden (DLL-Datei laden ist grundsätzlich kein Problem), sonst stürzt dein Programm ab.
Deine Abfrage muss auf jeden Fall vor dem ersten Funktionsaufruf stehen. Ob vor oder nach LoadLibrary() ist egal, aber ich würde es lieber vor LoadLibrary() machen.
Re: PB.Ex Mail (Windows)
Verfasst: 25.06.2019 20:49
von HeX0R
O.k. das sollte kein Problem sein, Danke!
Re: PB.Ex Mail (Windows)
Verfasst: 26.06.2019 08:02
von dige
Wie kann man denn prüfen, ob .NET auf dem Rechner installiert ist? Gibt es einen Registry Key?
Re: PB.Ex Mail (Windows)
Verfasst: 26.06.2019 08:13
von RSBasic
Re: PB.Ex Mail (Windows)
Verfasst: 26.06.2019 12:54
von HeX0R
Ja genau, das hatte ich auch als Basis genommen.
Die Funktion gibt die Version zurück, oder aber nichts, falls kein .NET >= 4.5 installiert ist.
Code: Alles auswählen
Procedure.s CheckNetFrameWork4_5()
Protected Result.s, hKey, lpcbData, ReleaseInfo.l, lpType, Path.s, Key.s
;Source: https://docs.microsoft.com/de-de/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed
Path = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
Key = "Release"
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, Path, 0, #KEY_READ, @hKey) = #ERROR_SUCCESS
lpcbData = 4
RegQueryValueEx_(hKey, @Key, #Null, @lpType, @ReleaseInfo, @lpcbData)
RegCloseKey_(hKey)
EndIf
If ReleaseInfo
Select ReleaseInfo
Case 378389
Result = "4.5"
Case 378675, 378758
Result = "4.5.1"
Case 379893
Result = "4.5.2"
Case 393295, 393297
Result = "4.6"
Case 394254, 394271
Result = "4.6.1"
Case 394802, 394806
Result = "4.6.2"
Case 460798, 460805
Result = "4.7"
Case 461308, 461310
Result = "4.7.1"
Case 461808, 461814
Result = "4.7.2"
Case 528040, 528209, 528049, 528372
Result = "4.8"
Default
Result = ">= 4.5"
EndSelect
EndIf
ProcedureReturn Result
EndProcedure
Update!
Neue ReleaseInfo für aktuelle Version hinzugefügt.