by Rockett » 08 May 2024, 07:09
KHA wrote: ↑07 May 2024, 06:13
Hi,
Wie wäre es mit folgendem Ansatz:
Inhalt von mfg.txt
<p style='font-size: 26px; color: red; font-family: Arial; font-weight: bold'> Dies ist ein Beispieltext</p>
Code: Select all
#NoEnv
#Singleinstance Force
FileRead, HtmlText, mfg.txt
::mfg::
SetClipboardHTML(HtmlText)
SendInput ^v
return
SetClipboardHTML(HtmlBody, HtmlHead:="", AltText:="") { ; v0.67 by SKAN on D393/D42B
Local F, Html, pMem, Bytes, hMemHTM:=0, hMemTXT:=0, Res1:=1, Res2:=1 ; @ tiny.cc/t80706
Static CF_UNICODETEXT:=13, CFID:=DllCall("RegisterClipboardFormat", "Str","HTML Format")
If ! DllCall("OpenClipboard", "Ptr",A_ScriptHwnd)
Return 0
Else DllCall("EmptyClipboard")
If (HtmlBody!="")
{
Html := "Version:0.9`r`nStartHTML:00000000`r`nEndHTML:00000000`r`nStartFragment"
. ":00000000`r`nEndFragment:00000000`r`n<!DOCTYPE>`r`n<html>`r`n<head>`r`n"
. HtmlHead . "`r`n</head>`r`n<body>`r`n<!--StartFragment -->`r`n"
. HtmlBody . "`r`n<!--EndFragment -->`r`n</body>`r`n</html>"
Bytes := StrPut(Html, "utf-8")
hMemHTM := DllCall("GlobalAlloc", "Int",0x42, "Ptr",Bytes+4, "Ptr")
pMem := DllCall("GlobalLock", "Ptr",hMemHTM, "Ptr")
StrPut(Html, pMem, Bytes, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<html>", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+23, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","</html>", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+41, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<!--StartFra", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+65, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<!--EndFragm", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+87, 8, "utf-8")
DllCall("GlobalUnlock", "Ptr",hMemHTM)
Res1 := DllCall("SetClipboardData", "Int",CFID, "Ptr",hMemHTM)
}
If (AltText!="")
{
Bytes := StrPut(AltText, "utf-16")
hMemTXT := DllCall("GlobalAlloc", "Int",0x42, "Ptr",(Bytes*2)+8, "Ptr")
pMem := DllCall("GlobalLock", "Ptr",hMemTXT, "Ptr")
StrPut(AltText, pMem, Bytes, "utf-16")
DllCall("GlobalUnlock", "Ptr",hMemTXT)
Res2 := DllCall("SetClipboardData", "Int",CF_UNICODETEXT, "Ptr",hMemTXT)
}
DllCall("CloseClipboard")
hMemHTM := hMemHTM ? DllCall("GlobalFree", "Ptr",hMemHTM) : 0
Return (Res1 & Res2)
}
Danke! Das macht genau was ich brauche! Html kann ich von daher ist das optimal!
Wäre es zu viel verlangt, wenn du uns sagen könntest, was die einzelnen schritte tun? Ich würde es gerne auch verstehen, wenn dir das zuviel aufwand ist, kann ich das natürlich verstehen und bin erstmal total dankbar für deine Lösung!
@gregster
danke für den Tipp mit der Suche!
[quote=KHA post_id=570869 time=1715080406 user_id=97948]
Hi,
Wie wäre es mit folgendem Ansatz:
Inhalt von mfg.txt
[c]<p style='font-size: 26px; color: red; font-family: Arial; font-weight: bold'> Dies ist ein Beispieltext</p>[/c]
[code]#NoEnv
#Singleinstance Force
FileRead, HtmlText, mfg.txt
::mfg::
SetClipboardHTML(HtmlText)
SendInput ^v
return
SetClipboardHTML(HtmlBody, HtmlHead:="", AltText:="") { ; v0.67 by SKAN on D393/D42B
Local F, Html, pMem, Bytes, hMemHTM:=0, hMemTXT:=0, Res1:=1, Res2:=1 ; @ tiny.cc/t80706
Static CF_UNICODETEXT:=13, CFID:=DllCall("RegisterClipboardFormat", "Str","HTML Format")
If ! DllCall("OpenClipboard", "Ptr",A_ScriptHwnd)
Return 0
Else DllCall("EmptyClipboard")
If (HtmlBody!="")
{
Html := "Version:0.9`r`nStartHTML:00000000`r`nEndHTML:00000000`r`nStartFragment"
. ":00000000`r`nEndFragment:00000000`r`n<!DOCTYPE>`r`n<html>`r`n<head>`r`n"
. HtmlHead . "`r`n</head>`r`n<body>`r`n<!--StartFragment -->`r`n"
. HtmlBody . "`r`n<!--EndFragment -->`r`n</body>`r`n</html>"
Bytes := StrPut(Html, "utf-8")
hMemHTM := DllCall("GlobalAlloc", "Int",0x42, "Ptr",Bytes+4, "Ptr")
pMem := DllCall("GlobalLock", "Ptr",hMemHTM, "Ptr")
StrPut(Html, pMem, Bytes, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<html>", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+23, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","</html>", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+41, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<!--StartFra", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+65, 8, "utf-8")
F := DllCall("Shlwapi.dll\StrStrA", "Ptr",pMem, "AStr","<!--EndFragm", "Ptr") - pMem
StrPut(Format("{:08}", F), pMem+87, 8, "utf-8")
DllCall("GlobalUnlock", "Ptr",hMemHTM)
Res1 := DllCall("SetClipboardData", "Int",CFID, "Ptr",hMemHTM)
}
If (AltText!="")
{
Bytes := StrPut(AltText, "utf-16")
hMemTXT := DllCall("GlobalAlloc", "Int",0x42, "Ptr",(Bytes*2)+8, "Ptr")
pMem := DllCall("GlobalLock", "Ptr",hMemTXT, "Ptr")
StrPut(AltText, pMem, Bytes, "utf-16")
DllCall("GlobalUnlock", "Ptr",hMemTXT)
Res2 := DllCall("SetClipboardData", "Int",CF_UNICODETEXT, "Ptr",hMemTXT)
}
DllCall("CloseClipboard")
hMemHTM := hMemHTM ? DllCall("GlobalFree", "Ptr",hMemHTM) : 0
Return (Res1 & Res2)
}[/code]
[/quote]
Danke! Das macht genau was ich brauche! Html kann ich von daher ist das optimal!
Wäre es zu viel verlangt, wenn du uns sagen könntest, was die einzelnen schritte tun? Ich würde es gerne auch verstehen, wenn dir das zuviel aufwand ist, kann ich das natürlich verstehen und bin erstmal total dankbar für deine Lösung!
[mention]gregster[/mention]
danke für den Tipp mit der Suche!