Seite 22 von 43
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 02.06.2010 18:56
				von neotoma
				Beschäftige mich gerade mit dem EditorGadget.
(Wobei mir Deine WinAPI schon sehr geholfen hat!)
SetZoom/GetZoom in Prozent,  evtl. als Erweiterung zu dem Zoom-Eintrag in der WinAPI.
Code: Alles auswählen
Procedure.f Editor_GetZoomPct(Gadget)
  Protected wParam.l, hParam.l  , result.l
  result.l =  SendMessage_(GadgetID(Gadget),#EM_GETZOOM,@wParam, @hParam)
  
  If wParam=0 And hParam = 0   ; No Zoom
    ProcedureReturn 100
  EndIf
  
  ProcedureReturn (wParam/hParam *100)
EndProcedure 
Procedure Editor_SetZoomPct(Gadget,zoom.l)
  Protected result.l
  result.l =  SendMessage_(GadgetID(Gadget),#EM_SETZOOM,zoom,10)
EndProcedure 
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  EditorGadget(1,10,10,480,200,0)
  TrackBarGadget(2,10,220,480,20,1,100,0) 
  AddGadgetItem(1,-1,"Teststring",0,0)
  SetWindowTitle(0, "Window Zoom="+StrF(Editor_GetZoomPct(1),0)+"%")     
    
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
   Case 2
     Editor_SetZoomPct(1, GetGadgetState(2))
     SetWindowTitle(0, "Window Zoom="+StrF(Editor_GetZoomPct(1),0)+"%")     
  EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Gruß,
Mike
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 02.06.2010 21:14
				von RSBasic
				Hallo neotoma,
stimmt, das Ändern des Zoom-Faktors ist in der Library vorhanden, aber das Ermitteln des Zoom-Faktors noch nicht.
Danke für das Posten des Beispielcodes 

 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 03.06.2010 11:56
				von neotoma
				Hi RSBasic,
hier habe ich noch einen.
Indent/Outdent auf Zentimeterbasis.
Code: Alles auswählen
Procedure.l Twip(mm.f)
  ProcedureReturn Int(mm * (1440/25.4))
EndProcedure
Procedure Editor_Indent(Gadget)
  format.PARAFORMAT2
  format\cbSize = SizeOf(PARAFORMAT2)
  ;Read first
  SendMessage_(GadgetID(Gadget), #EM_GETPARAFORMAT, 0, @format)
  
  
  format\dxStartIndent = Twip(10)     ; Ten Milimeters right
  format\dwMask = #PFM_OFFSETINDENT
  SendMessage_(GadgetID(Gadget), #EM_SETPARAFORMAT, 0, @format)
EndProcedure 
Procedure Editor_Outdent(Gadget)
  format.PARAFORMAT2
  format\cbSize = SizeOf(PARAFORMAT2)
  ;Read first
  SendMessage_(GadgetID(Gadget), #EM_GETPARAFORMAT, 0, @format)
  
  format\dxStartIndent = 0-Twip(10)   ; Ten Milimeters left
  format\dwMask = #PFM_OFFSETINDENT
  SendMessage_(GadgetID(Gadget), #EM_SETPARAFORMAT, 0, @format)
EndProcedure 
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  EditorGadget(1,10,10,480,200,0)
  ButtonGadget(2,10,220,100,20,"Indent")
  ButtonGadget(3,390,220,100,20,"Outdent")
  
  For a=1 To 10
    AddGadgetItem(1,-1,"Teststring",0,0)
  Next
  
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 2
      SendMessage_(GadgetID(1),#EM_SETSEL,0,-1)   ; Select all      
      Editor_Indent(1)
      SendMessage_(GadgetID(1),#EM_SETSEL,0,0)    ;Deselect all
    Case 3
      SendMessage_(GadgetID(1),#EM_SETSEL,0,-1)   ; Select all      
      Editor_Outdent(1)
      SendMessage_(GadgetID(1),#EM_SETSEL,0,0)    ;Deselect all      
  EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
  Quit=1
EndIf
Until Quit=1
EndIf
Gruß,
Mike
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 07.06.2010 19:15
				von neotoma
				GetParentPID - Die PID des aufrufenden Processes ermitteln:
Code: Alles auswählen
Structure PROCESS_BASIC_INFORMATION
    ExitStatus.i
    PebBaseAddress.i
    AffinityMask.i
    BasePriority.i
    UniqueProcessId.i
    InheritedFromUniqueProcessId.i
EndStructure
  
Procedure.i GetParentPid( hProcess)
  Protected pbi.PROCESS_BASIC_INFORMATION
  
  ; Query the ProcessBasicInformation(0)
  ZwQueryInformationProcess_(hProcess, 0, @pbi, SizeOf(PROCESS_BASIC_INFORMATION), 0);
  ProcedureReturn pbi\InheritedFromUniqueProcessId;
EndProcedure 
;Example:
dwParentId.i = GetParentPid(GetCurrentProcess_());
Debug("Parent Process:" + Str(dwParentId))
Gruß,
Mike
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 07.06.2010 19:46
				von RSBasic
				Hallo neotoma,
neotoma hat geschrieben:Indent/Outdent auf Zentimeterbasis.
Vielen lieben Dank für dein Code, sehr interessant, danke 
--------------------------------------------------
Das Ermitteln der PID-Nummer gibt es schon in der WinAPI Library:
http://www.rsbasic.de/index.php?option= ... &Itemid=59 / 
http://www.rsbasic.de/index.php?option= ... &Itemid=59 / 
http://www.rsbasic.de/index.php?option= ... &Itemid=59
Trotzdem danke fürs Posten des Codes^^
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 07.06.2010 20:27
				von neotoma
				
Hi RSBasic,
diese Codes ermitteln aber nicht den Vater-Prozess. Also von welchem Prozess man aufgerufen wurde.
Das ist noch nicht in der WinAPI.
Ist jedooch Deine Entscheidung.
Gruß,
Mike
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 12.06.2010 20:07
				von edel
				@neotoma
Danke fuer den Code, aber bei der Struktur PROCESS_BASIC_INFORMATION muss Integer statt Long benutzt werden.
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 14.06.2010 11:33
				von neotoma
				edel hat geschrieben:@neotoma
Danke fuer den Code, aber bei der Struktur PROCESS_BASIC_INFORMATION muss Integer statt Long benutzt werden.
Danke für die Info. Habe es geändert.
Gruß,
Mike
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 14.06.2010 20:34
				von RSBasic
				Hallo neotoma,
sorry, dass ich erst jetzt schreibe.
Ich find dein Code gerade sehr nützlich, weil ich den Code jetzt brauch 
 
Vielen lieben Dank fürs Schreiben und Posten 
 
Jetzt verstehe ich auch, was du mit Vater-PID meintest.
Sehr nützlich dein Code, werd ich auf jeden Fall in meiner Library hinzufügen.
Danke nochmal 
 
Hab jetzt schon insgesamt 54 neue WinAPI-Codes in meiner ToDo-Liste, die ich "irgendwann" ( 

 ) abarbeiten werde.
Wenn ich mein neues Projekt "PureBasic Updater" fertig gestellt habe, dann werde ich anfangen, die ganzen neuen nützlichen Codes hinzuzufügen.
 
			 
			
					
				Re: WinAPI Library (Snippets) (493)
				Verfasst: 14.06.2010 21:58
				von RSBasic
				neotoma hat geschrieben:GetParentPID - Die PID des aufrufenden Processes ermitteln:[...]
Gibt es auch eine Möglichkeit, das Handle des aufrufenden Prozesses zu ermitteln?