Tachchen,
Ich würde gerne von außen (also einem anderen Programm) Texte in den PB-Editor einfügen lassen bzw löschen lassen.
Kann mir einer n stück Code schreiben wo ich zB irgendein Wort an einer stelle des Quellcode einfügen kann ?
Mit SendKeys() aus dem Archiv will ich es nicht machen, es wäre gut wenn sowas mit ScintillaSendMessage gehen würde ...
Wie kann ich den PB-Editor von außen bearbeiten?
Wie kann ich den PB-Editor von außen bearbeiten?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Hier mal ein kleines Programm das ich nutze (als Werkzeug starten) :
Code: Alles auswählen
Procedure.s GetPBDir()
ProcedureReturn GetPathPart(GetEnvironmentVariable("PB_TOOL_IDE"))
EndProcedure
Procedure.l GetSCI()
ProcedureReturn Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
EndProcedure
Procedure GetProcessFromWindow(hwnd)
Protected pid.l = 0
Protected result.l = 0
If GetWindowThreadProcessId_(hwnd, @pid)
result = OpenProcess_(#PROCESS_ALL_ACCESS, #False, pid)
EndIf
ProcedureReturn result
EndProcedure
ProcedureDLL PasteText(buffer.s)
Protected hProc.l = 0
Protected mem.l = 0
Protected bW.l = 0
Protected hsci.l = GetSCI()
Protected len.l = 0
hProc = GetProcessFromWindow(hsci)
If hProc
len = Len(buffer)
mem = VirtualAllocEx_(hProc, 0, len, #MEM_RESERVE | #MEM_COMMIT, #PAGE_EXECUTE_READWRITE)
If mem
WriteProcessMemory_(hProc, mem, @buffer, len, @bW)
ret = SendMessage_(hsci, #SCI_ADDTEXT, len, mem)
VirtualFreeEx_(hProc, mem, len, #MEM_RELEASE)
EndIf
CloseHandle_(hProc)
EndIf
EndProcedure
Procedure.s GetInclude(dir.s)
ClearGadgetItems(0)
If ExamineDirectory(0, GetPBDir() + dir, "*.pbi")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
AddGadgetItem(0, -1, DirectoryEntryName(0))
EndIf
Wend
FinishDirectory(0)
EndIf
EndProcedure
Procedure.s BuildBuffer(dir.s)
buffer.s = "XIncludefile ( #PB_Compiler_Home + " + Chr(34)
buffer.s + dir + GetGadgetText(0)
buffer.s + Chr(34) + ")" + #LF$
ProcedureReturn buffer
EndProcedure
Procedure main()
hwnd = OpenWindow(0, #PB_Ignore, #PB_Ignore, 300, 155, "Select Include")
ListViewGadget(0, 5, 5, 290, 110)
ButtonGadget(1, 5, 125, 75, 23, "Paste")
ButtonGadget(2, 295-75, 125, 75, 23, "Open")
ButtonGadget(3, 295/2-(75/2), 125, 75, 23, "New")
DisableGadget(1, #True)
DisableGadget(2, #True)
If ProgramParameter(0)
dir.s = ProgramParameter(0) + "\"
Else
dir.s = "include\"
EndIf
GetInclude(dir)
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
If EventGadget() = 1
If GetGadgetText(0)
PasteText(BuildBuffer(dir))
EndIf
EndIf
If EventGadget() = 2
If GetGadgetText(0)
RunProgram(GetPBDir() + dir + GetGadgetText(0))
EndIf
Break
EndIf
If EventGadget() = 3
Repeat
file.s = InputRequester("New Inlude","Set a name or press ESC","inc.temp.pbi")
If file
If FileSize(GetPBDir() + dir + file) = -2
MessageRequester("Error","File is a directory !")
Continue
EndIf
If FileSize(GetPBDir() + dir + file) > -1
If Not MessageRequester("Error","File exists, overrides ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
Continue
EndIf
EndIf
If CreateFile(0,GetPBDir() + dir + file)
CloseFile(0)
EndIf
GetInclude(dir)
SetGadgetText(0,file)
EndIf
Until #True
EndIf
If EventGadget() = 0
If EventType() = #PB_EventType_LeftDoubleClick
If GetGadgetText(0)
PasteText(BuildBuffer(dir))
EndIf
EndIf
If GetGadgetState(0)> -1
DisableGadget(1, #False)
DisableGadget(2, #False)
Else
DisableGadget(1, #True)
DisableGadget(2, #True)
EndIf
EndIf
EndIf
If event = #WM_KEYDOWN
If EventwParam() = #VK_ESCAPE
Break
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndProcedure : main()
Danke edel, kannst du noch kurz sagen was das Werkzeug für Parameter bekommt, damit ich es mal in Aktion sehen kann, sonst gucke ich einafch was ich gebrauchen kann
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Ich denke mal das Verzeichnis, wo Du Deine Includes aufbewahrst. Trigger
wird das nicht benötigen.
wird das nicht benötigen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

jo schon gut brauchs nicht mehr, habe bereits das "gefiltert" was ich brauche.
SUPER großen danke an edel
SUPER großen danke an edel

PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr