Seite 1 von 3
Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 14:34
von Fanpost
Ich speicher mein HTML-Formular wie folgt ab:
Code: Alles auswählen
Procedure FormularSpeichern()
Protected WebObject.IWebBrowser2
WebObject = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
WebObject\ExecWB(#OLECMDID_SAVEAS, #OLECMDEXECOPT_DontPROMPTUSER, 0, 0)
EndProcedure
Mit dieser Prozedur wird mit dem Dateinamen "blank" gespeichert.
Wie kann ich einen Dateinamen hinzufügen?
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 15:15
von Kiffi
Code: Alles auswählen
#VT_BSTR = 8
Procedure FormularSpeichern(Filename.s)
Protected WebObject.IWebBrowser2
WebObject = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
Protected filename_Unicode
; convert to unicode
filename_Unicode = AllocateMemory(Len(Filename) * 2 + 2)
MultiByteToWideChar_(#CP_ACP, 0, @Filename, -1, filename_Unicode, Len(Filename) * 2 + 2)
Protected filename_BSTR
; create bstr
filename_BSTR = SysAllocString_(filename_Unicode)
; fill variant
Protected VariantIn.VARIANT
VariantIn\vt = #VT_BSTR
VariantIn\bstrVal = filename_BSTR
If WebObject\ExecWB(#OLECMDID_SAVEAS, #OLECMDEXECOPT_DONTPROMPTUSER, @VariantIn, 0) = #S_OK
MessageRequester("","Saved sucessfully")
Else
MessageRequester("","could not save file")
EndIf
FreeMemory(filename_Unicode)
SysFreeString_(filename_BSTR)
EndProcedure
(habe ich Dir am 23. Juni per Mail gesendet)
Grüße ... Peter
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:03
von ts-soft
Kiffi hat geschrieben:Code: Alles auswählen
WebObject = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
Besser mit GetWindowLongPtr_
Code: Alles auswählen
WebObject = GetWindowLongPtr_(GadgetID(#Adresse), #GWL_USERDATA)
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:04
von NicTheQuick
Diese zwei Zeilen würde ich aber ändern von
Code: Alles auswählen
filename_Unicode = AllocateMemory(Len(Filename) * 2 + 2)
MultiByteToWideChar_(#CP_ACP, 0, @Filename, -1, filename_Unicode, Len(Filename) * 2 + 2)
in
Code: Alles auswählen
CompilerIf #PB_Compiler_Unicode
filename_Unicode = @Filename
CompilerElse
filename_Unicode = AllocateMemory((Len(Filename) + 1) * SizeOf(Unicode))
PokeS(filename_Unicode, Filename, -1, #PB_Unicode)
CompilerEndIf
Dafür muss am Ende aber auch noch das hier hin:
Code: Alles auswählen
CompilerIf Not #PB_Compiler_Unicode
FreeMemory(filename_Unicode)
CompilerEndIf
@ts-soft:

Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:05
von RSBasic
@NicTheQuick
64 Bit-Kompatibilität.
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:06
von NicTheQuick
RSBasic hat geschrieben:64 Bit-Kompatibilität.
Was möchtest du damit sagen?
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:08
von RSBasic
NicTheQuick hat geschrieben:@ts-soft:

Gegenfrage: Was wolltest du damit sagen? Ich dachte, du wüsstest nicht, warum ts-soft gesagt hat, dass GetWindowLongPtr_() besser sei, als GetWindowLong_().
Oder was hast du damit gemeint?
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:10
von NicTheQuick
Sein Post war vorher noch kaputt formatiert und unvollständig, da hab ich nicht kapiert, was er sagen wollte. Jetzt hat er es ja wieder editiert.
Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:13
von ts-soft
Noch etwas kürzer
Code: Alles auswählen
filename_Unicode = AllocateMemory(StringByteLength(Filename.s, #PB_Unicode) + 2)
PokeS(filename_Unicode, Filename, -1, #PB_Unicode)
;
;
FreeMemory(filename_Unicode)
PS: Beim ersten Posting von mir fehlte noch ein [ /code ]. Das sah einfach nur schrecklich aus

Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 24.11.2015 16:23
von NicTheQuick
Ich vermeide das Kopieren lieber, wenn es nicht notwendig ist.
