PB.Ex Mail (Windows)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: PB.Ex Mail (Windows)

Beitrag 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$)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag von RSBasic »

Genau :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: PB.Ex Mail (Windows)

Beitrag 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
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag 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?
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag von HeX0R »

O.k. das sollte kein Problem sein, Danke!
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: PB.Ex Mail (Windows)

Beitrag von dige »

Wie kann man denn prüfen, ob .NET auf dem Rechner installiert ist? Gibt es einen Registry Key?
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag von RSBasic »

In der Registry kannst du das feststellen: https://docs.microsoft.com/de-de/dotnet ... -installed
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: PB.Ex Mail (Windows)

Beitrag 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.
Zuletzt geändert von HeX0R am 19.06.2020 16:37, insgesamt 2-mal geändert.
Antworten