English
Source / code snippets

Process Thread

 
From Andreas Miethe:
Statement moreover. it go 2 Files needed, once the eigentliche Program, to that others the what whom Loop contains.
The Loop-Program must compiled his.
the Hauptprogramm launch itself simply yourself with Parameters (Loop-Program) new. the whole functions only if both programs compiled are !

is Perhaps yet verbesserungswürdig, functions but first !

Loop-Program ( as timer.prf Save and kompilieren )
CompileMarkSeparation
Als Timer.prf speichern und kompilieren !
 $H windows.ph

If %parCount > 0

    Declare WND&
    Var X& = 0
    WND& = Val(Par$(2))

    whileloop 0,1000000

        If X& = 0

            UseCursor 0
            X& = 1

        Endif

        ~InvalidateRect(wnd&,0,0)
        SetText Wnd&,Str$(&Loop)
        Sleep 10

    endwhile

Endif


Hauptprogramm
CompileMarkSeparation
#########################################
Thread started, pausieren let, terminate
Andreas Miethe 28.03.2008
#########################################
BEACHTE : started as EXE or STRG+F8
#########################################
 $IFDEF Compiler
 $H windows.ph
 $H Structs.ph
 $H Messages.ph
Struct StartupInfo = ~STARTUPINFO
Struct ProcessInfo = ~PROCESS_INFORMATION
Struct MEMORYSTATUS = ~MEMORYSTATUS
Var Ende& = 0
cls ~GetSysColor(~COLOR_BTNFACE)
Declare ProcessHandle&,Processhandle1&
Declare ThreadHandle&,Threadhandle1&

Proc CreateThread

    Parameters Param$
    Declare StartupInfo#,CommandString$,ProcessInfo#
    Declare Retval&,Processhandle&,ThreadHandle&
    CommandString$ = Par$(0) +   + Param$
    Dim StartupInfo#,StartupInfo
    Clear StartupInfo#
    StartupInfo#.cb& = SizeOf(StartupInfo#)
    Dim ProcessInfo#,ProcessInfo
    Clear ProcessInfo#
    ~CreateProcess(0,Addr(CommandString$),0,0,0,0,0,0,StartupInfo#,ProcessInfo#)
    ProcessHandle& = ProcessInfo#.hProcess&
    ThreadHandle&  = ProcessInfo#.hThread&
    Dispose StartupInfo#
    Dispose ProcessInfo#
    Return Str $(ProcessHandle&)+,+Str $(ThreadHandle&)

ENDPROC

Proc TerminateThread

    Parameters ProcessHandle&
    Declare ExitCode&
    ~GetExitCodeProcess(Processhandle&,Addr(ExitCode&))
    ~TerminateProcess(Processhandle&,ExitCode&)

ENDPROC

Proc PauseThread

    Parameters Threadhandle&
    ~SuspendThread(Threadhandle&)

ENDPROC

Proc ResumeThread

    Parameters Threadhandle&
    ~ResumeThread(Threadhandle&)

ENDPROC

Var Handles$ =
Var Start& = Create(Button,%hwnd,Start,10,10,80,24)
Var Pause& = Create(Button,%hwnd,interval,10,40,80,24)
Var Resume& = Create(Button,%hwnd,continue,10,70,80,24)
Var Terminate& = Create(Button,%hwnd,end,10,100,80,24)
Var Empfang& = Create(TEXT,%hwnd,,10,130,80,24)
SendMessage(Start&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Pause&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Resume&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Terminate&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
SendMessage(Empfang&,~WM_SETFONT,~GetStockObject(~ANSI_VAR_FONT),1)
EnableWindow Pause&,0
EnableWindow Resume&,0
EnableWindow Terminate&,0
Var Statusbar& = Create(Status Window,%hwnd,)
UpdateStatus(Statusbar&)
SubClass StatusBar&,1SubClassing on
~SetTimer(StatusBar&,1,1000,0)Timer on The Statusbar hang
SubClass %hwnd,1SubClassing on
User Messages ~wm_close

WhileNot Ende&

    Waitinput

    If Clicked(Start&)

        The Exe launch itself yourself yet once with Parameters
        the Parameter, the here expects becomes is one one Compilations ( PRC-File )
        Handles$ = CreateThread(Timer.prc +st$(Empfang&))
        ProcessHandle1& = Val(Substr$(Handles$,1,,))
        ThreadHandle1& = Val(Substr$(Handles$,2,,))
        EnableWindow Pause&,1
        EnableWindow Terminate&,1
        EnableWindow Start&,0

    Elseif Clicked(Pause&)

        PauseThread(ThreadHandle1&)
        EnableWindow Pause&,0
        EnableWindow Resume&,1

    ElseIf Clicked(Resume&)

        ResumeThread(ThreadHandle1&)
        EnableWindow Pause&,1
        EnableWindow Resume&,0

    ElseIf Clicked(Terminate&)

        EnableWindow Pause&,0
        EnableWindow Resume&,0
        EnableWindow Terminate&,0
        EnableWindow Start&,1
        TerminateThread(ProcessHandle1&)

    Endif

    If %Umessage = ~wm_close

        if TerminateThread() not with End of program called becomes,
        runs the 2.Program moreover !
        TerminateThread(ProcessHandle1&)
        Ende& = 1

    Endif

EndWhile

SubClass StatusBar&,0
SubClass %hwnd,0
end

Proc UpdateStatus

    Parameters Statusbar&
    Declare MemStatus#
    Dim Memstatus#,MEMORYSTATUS
    MemStatus#.dwLength& = SizeOf(MemStatus#)
    ~Global memory status(MemStatus#)
    SetText Statusbar&,now : +time$(0)+:+Left$(time$(1),2)+  -  Speicherverbrauch : +Str $(MemStatus#.dwMemoryLoad&)+%
    Dispose MemStatus#

ENDPROC

SubClassProc

    If SubClassMessage(%hwnd, ~WM_SIZE)

        SetWindowPos Statusbar& = 0,0-0,0

    ElseIf SubClassMessage(Statusbar&, ~WM_TIMER)

        UpdateStatus(&sWnd)

    Endif

ENDPROC

 
03/28/08  
 



Thanks gestackter userMessages can a simple verlustfreie Prozesskommunikation produce.

One other example could the 2. Process the lever the Mainwindow as Parameter with on the lane give - about which then The Messages simply To versenden wären.
 
03/28/08  
 




Andreas
Gaida
Hi

or one uses joint memory so can quick and easily grosse crowds of data
between several Programs replace or together benefit.

have the example in the Profan Help found and on my needs angepast.
be I do not sure whether I with the release the Speichers everything correctly. made have if not would I for a korrektur grateful.

example ( first master started then Slave) :
CompileMarkSeparation
 $I mem-create.inc
initialisiert 18 2048 Byte Grosse gemeinsamme Speicher SharedBuffer1# bis SharedBuffer18#
Declare Temp1$,Bereich#,ENDE%
STRUCT shared = variable1%,variable2&,variable3!,variable4$(2033)
Dim Bereich#,shared
Bereich#.variable1% = 32768
Bereich#.variable2& = 2147483647
Bereich#.variable3! = 123.456
Bereich#.variable4$ = und noch ein weiterer test
Window 0,400-500,450
Windowtitle Master
string SharedBuffer1#,0 = das ist ein test
long   SharedBuffer2#,0 = 123456789
SharedBuffer3# = Bereich#
Bereich# = SharedBuffer3#
print  @String$(SharedBuffer1#,0)
print  @long   (SharedBuffer2#,0)
print Bereich#.variable1%
print Bereich#.variable2&
print Bereich#.variable3!
print Bereich#.variable4$
settimer 50

WHILENOT ENDE%

    WAITINPUT
    locate 10,1
    clear SharedBuffer3#
    Bereich#.variable2& = &GetTickCount
    Bereich#.variable4$ = @Time$(0)+:+ @Time$(1)
    SharedBuffer3# = Bereich#

ENDWHILE

sharedclear Löscht die Buffer
Dispose area#

CompileMarkSeparation
 $I mem-use.inc
position 18 2048 byte Grosse gemeinsamme memory SharedBuffer1# To SharedBuffer18#
the Program To available . must but before through mem-create.inc  of a others
Program prepares been his .
Declare Temp1$,area#,ENDE%
STRUCT shared = variable1%,variable2&,variable3!,variable4$(2033)
Dim area#,shared
Bereich#.variable1% = 32768
Bereich#.variable2& = 2147483647
Bereich#.variable3! = 123.456
Bereich#.variable4$ = and yet one Another Test
Window 520,400-500,450
Windowtitle Slave
string SharedBuffer1#,0 = the is one Test
long   SharedBuffer2#,0 = 123456789
SharedBuffer3# = area#
Bereich# = SharedBuffer3#
print  @String $(SharedBuffer1#,0)
print  @long   (SharedBuffer2#,0)
print area#.variable1%
print area#.variable2&
print area#.variable3!
print area#.variable4$
settimer 50

WHILENOT ENDE%

    WAITINPUT
    locate 10,1
    print
    print
    locate 10,1
    area# = SharedBuffer3#
    print area#.variable2&
    print area#.variable4$

ENDWHILE


CompileMarkSeparation
mem-create.inc
 $H windows.ph
Def &MapFileSize1 2048
Def &MapFileSize2 2048
Def &MapFileSize3 2048
Def &MapFileSize4 2048
Def &MapFileSize5 2048
Def &MapFileSize6 2048
Def &MapFileSize7 2048
Def &MapFileSize8 2048
Def &MapFileSize9 2048
Def &MapFileSize10 2048
Def &MapFileSize11 2048
Def &MapFileSize12 2048
Def &MapFileSize13 2048
Def &MapFileSize14 2048
Def &MapFileSize15 2048
Def &MapFileSize16 2048
Def &MapFileSize17 2048
Def &MapFileSize18 2048
Declare hFileMap1&
Declare hFileMap2&
Declare hFileMap3&
Declare hFileMap4&
Declare hFileMap5&
Declare hFileMap6&
Declare hFileMap7&
Declare hFileMap8&
Declare hFileMap9&
Declare hFileMap10&
Declare hFileMap11&
Declare hFileMap12&
Declare hFileMap13&
Declare hFileMap14&
Declare hFileMap15&
Declare hFileMap16&
Declare hFileMap17&
Declare hFileMap18&
Declare FileMapName1$
Declare FileMapName2$
Declare FileMapName3$
Declare FileMapName4$
Declare FileMapName5$
Declare FileMapName6$
Declare FileMapName7$
Declare FileMapName8$
Declare FileMapName9$
Declare FileMapName10$
Declare FileMapName11$
Declare FileMapName12$
Declare FileMapName13$
Declare FileMapName14$
Declare FileMapName15$
Declare FileMapName16$
Declare FileMapName17$
Declare FileMapName18$
Declare SharedBuffer1#, BufferAddr1& ,b& ,c&
Declare SharedBuffer2#, BufferAddr2&
Declare SharedBuffer3#, BufferAddr3&
Declare SharedBuffer4#, BufferAddr4&
Declare SharedBuffer5#, BufferAddr5&
Declare SharedBuffer6#, BufferAddr6&
Declare SharedBuffer7#, BufferAddr7&
Declare SharedBuffer8#, BufferAddr8&
Declare SharedBuffer9#, BufferAddr9&
Declare SharedBuffer10#, BufferAddr10&
Declare SharedBuffer11#, BufferAddr11&
Declare SharedBuffer12#, BufferAddr12&
Declare SharedBuffer13#, BufferAddr13&
Declare SharedBuffer14#, BufferAddr14&
Declare SharedBuffer15#, BufferAddr15&
Declare SharedBuffer16#, BufferAddr16&
Declare SharedBuffer17#, BufferAddr17&
Declare SharedBuffer18#, BufferAddr18&
Dim SharedBuffer1#, 2048
Dim SharedBuffer2#, 2048
Dim SharedBuffer3#, 2048
Dim SharedBuffer4#, 2048
Dim SharedBuffer5#, 2048
Dim SharedBuffer6#, 2048
Dim SharedBuffer7#, 2048
Dim SharedBuffer8#, 2048
Dim SharedBuffer9#, 2048
Dim SharedBuffer10#, 2048
Dim SharedBuffer11#, 2048
Dim SharedBuffer12#, 2048
Dim SharedBuffer13#, 2048
Dim SharedBuffer14#, 2048
Dim SharedBuffer15#, 2048
Dim SharedBuffer16#, 2048
Dim SharedBuffer17#, 2048
Dim SharedBuffer18#, 2048
BufferAddr1& = SharedBuffer1#
BufferAddr2& = SharedBuffer2#
BufferAddr3& = SharedBuffer3#
BufferAddr4& = SharedBuffer4#
BufferAddr5& = SharedBuffer5#
BufferAddr6& = SharedBuffer6#
BufferAddr7& = SharedBuffer7#
BufferAddr8& = SharedBuffer8#
BufferAddr9& = SharedBuffer9#
BufferAddr10& = SharedBuffer10#
BufferAddr11& = SharedBuffer11#
BufferAddr12& = SharedBuffer12#
BufferAddr13& = SharedBuffer13#
BufferAddr14& = SharedBuffer14#
BufferAddr15& = SharedBuffer15#
BufferAddr16& = SharedBuffer16#
BufferAddr17& = SharedBuffer17#
BufferAddr18& = SharedBuffer18#
FileMapName1$ = sharedmap1 + @Chr$(0)
FileMapName2$ = sharedmap2 + @Chr$(0)
FileMapName3$ = sharedmap3 + @Chr$(0)
FileMapName4$ = sharedmap4 + @Chr$(0)
FileMapName5$ = sharedmap5 + @Chr$(0)
FileMapName6$ = sharedmap6 + @Chr$(0)
FileMapName7$ = sharedmap7 + @Chr$(0)
FileMapName8$ = sharedmap8 + @Chr$(0)
FileMapName9$ = sharedmap9 + @Chr$(0)
FileMapName10$ = sharedmap10 + @Chr$(0)
FileMapName11$ = sharedmap11 + @Chr$(0)
FileMapName12$ = sharedmap12 + @Chr$(0)
FileMapName13$ = sharedmap13 + @Chr$(0)
FileMapName14$ = sharedmap14 + @Chr$(0)
FileMapName15$ = sharedmap15 + @Chr$(0)
FileMapName16$ = sharedmap16 + @Chr$(0)
FileMapName17$ = sharedmap17 + @Chr$(0)
FileMapName18$ = sharedmap18 + @Chr$(0)
hFileMap1& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize1, @Addr(FileMapName1$))
hFileMap2& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize2, @Addr(FileMapName2$))
hFileMap3& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize3, @Addr(FileMapName3$))
hFileMap4& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize4, @Addr(FileMapName4$))
hFileMap5& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize5, @Addr(FileMapName5$))
hFileMap6& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize6, @Addr(FileMapName6$))
hFileMap7& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize7, @Addr(FileMapName7$))
hFileMap8& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize8, @Addr(FileMapName8$))
hFileMap9& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize9, @Addr(FileMapName9$))
hFileMap10& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize10, @Addr(FileMapName10$))
hFileMap11& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize11, @Addr(FileMapName11$))
hFileMap12& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize12, @Addr(FileMapName12$))
hFileMap13& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize13, @Addr(FileMapName13$))
hFileMap14& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize14, @Addr(FileMapName14$))
hFileMap15& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize15, @Addr(FileMapName15$))
hFileMap16& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize16, @Addr(FileMapName16$))
hFileMap17& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize17, @Addr(FileMapName17$))
hFileMap18& = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,&MapFileSize18, @Addr(FileMapName18$))
hFileMap1& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName1$))
hFileMap2& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName2$))
hFileMap3& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName3$))
hFileMap4& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName4$))
hFileMap5& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName5$))
hFileMap6& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName6$))
hFileMap7& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName7$))
hFileMap8& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName8$))
hFileMap9& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName9$))
hFileMap10& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName10$))
hFileMap11& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName11$))
hFileMap12& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName12$))
hFileMap13& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName13$))
hFileMap14& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName14$))
hFileMap15& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName15$))
hFileMap16& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName16$))
hFileMap17& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName17$))
hFileMap18& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName18$))
SharedBuffer1# = ~MapViewOfFile(hFileMap1&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer2# = ~MapViewOfFile(hFileMap2&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer3# = ~MapViewOfFile(hFileMap3&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer4# = ~MapViewOfFile(hFileMap4&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer5# = ~MapViewOfFile(hFileMap5&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer6# = ~MapViewOfFile(hFileMap6&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer7# = ~MapViewOfFile(hFileMap7&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer8# = ~MapViewOfFile(hFileMap8&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer9# = ~MapViewOfFile(hFileMap9&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer10# = ~MapViewOfFile(hFileMap10&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer11# = ~MapViewOfFile(hFileMap11&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer12# = ~MapViewOfFile(hFileMap12&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer13# = ~MapViewOfFile(hFileMap13&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer14# = ~MapViewOfFile(hFileMap14&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer15# = ~MapViewOfFile(hFileMap15&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer16# = ~MapViewOfFile(hFileMap16&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer17# = ~MapViewOfFile(hFileMap17&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer18# = ~MapViewOfFile(hFileMap18&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)

PROC sharedclear

    SharedBuffer1# = BufferAddr1&
    SharedBuffer2# = BufferAddr2&
    SharedBuffer3# = BufferAddr3&
    SharedBuffer4# = BufferAddr4&
    SharedBuffer5# = BufferAddr5&
    SharedBuffer6# = BufferAddr6&
    SharedBuffer7# = BufferAddr7&
    SharedBuffer8# = BufferAddr8&
    SharedBuffer9# = BufferAddr9&
    SharedBuffer10# = BufferAddr10&
    SharedBuffer11# = BufferAddr11&
    SharedBuffer12# = BufferAddr12&
    SharedBuffer13# = BufferAddr13&
    SharedBuffer14# = BufferAddr14&
    SharedBuffer15# = BufferAddr15&
    SharedBuffer16# = BufferAddr16&
    SharedBuffer17# = BufferAddr17&
    SharedBuffer18# = BufferAddr18&
    Dispose SharedBuffer1#
    Dispose SharedBuffer2#
    Dispose SharedBuffer3#
    Dispose SharedBuffer4#
    Dispose SharedBuffer5#
    Dispose SharedBuffer6#
    Dispose SharedBuffer7#
    Dispose SharedBuffer8#
    Dispose SharedBuffer9#
    Dispose SharedBuffer10#
    Dispose SharedBuffer11#
    Dispose SharedBuffer12#
    Dispose SharedBuffer13#
    Dispose SharedBuffer14#
    Dispose SharedBuffer15#
    Dispose SharedBuffer16#
    Dispose SharedBuffer17#
    Dispose SharedBuffer18#

ENDPROC


CompileMarkSeparation
mem-use.inc
 $H windows.ph
Def &MapFileSize1 2048
Def &MapFileSize2 2048
Def &MapFileSize3 2048
Def &MapFileSize4 2048
Def &MapFileSize5 2048
Def &MapFileSize6 2048
Def &MapFileSize7 2048
Def &MapFileSize8 2048
Def &MapFileSize9 2048
Def &MapFileSize10 2048
Def &MapFileSize11 2048
Def &MapFileSize12 2048
Def &MapFileSize13 2048
Def &MapFileSize14 2048
Def &MapFileSize15 2048
Def &MapFileSize16 2048
Def &MapFileSize17 2048
Def &MapFileSize18 2048
Declare hFileMap1&
Declare hFileMap2&
Declare hFileMap3&
Declare hFileMap4&
Declare hFileMap5&
Declare hFileMap6&
Declare hFileMap7&
Declare hFileMap8&
Declare hFileMap9&
Declare hFileMap10&
Declare hFileMap11&
Declare hFileMap12&
Declare hFileMap13&
Declare hFileMap14&
Declare hFileMap15&
Declare hFileMap16&
Declare hFileMap17&
Declare hFileMap18&
Declare FileMapName1$
Declare FileMapName2$
Declare FileMapName3$
Declare FileMapName4$
Declare FileMapName5$
Declare FileMapName6$
Declare FileMapName7$
Declare FileMapName8$
Declare FileMapName9$
Declare FileMapName10$
Declare FileMapName11$
Declare FileMapName12$
Declare FileMapName13$
Declare FileMapName14$
Declare FileMapName15$
Declare FileMapName16$
Declare FileMapName17$
Declare FileMapName18$
Declare SharedBuffer1#, BufferAddr1& ,b& ,c&
Declare SharedBuffer2#, BufferAddr2&
Declare SharedBuffer3#, BufferAddr3&
Declare SharedBuffer4#, BufferAddr4&
Declare SharedBuffer5#, BufferAddr5&
Declare SharedBuffer6#, BufferAddr6&
Declare SharedBuffer7#, BufferAddr7&
Declare SharedBuffer8#, BufferAddr8&
Declare SharedBuffer9#, BufferAddr9&
Declare SharedBuffer10#, BufferAddr10&
Declare SharedBuffer11#, BufferAddr11&
Declare SharedBuffer12#, BufferAddr12&
Declare SharedBuffer13#, BufferAddr13&
Declare SharedBuffer14#, BufferAddr14&
Declare SharedBuffer15#, BufferAddr15&
Declare SharedBuffer16#, BufferAddr16&
Declare SharedBuffer17#, BufferAddr17&
Declare SharedBuffer18#, BufferAddr18&
Dim SharedBuffer1#, 2048
Dim SharedBuffer2#, 2048
Dim SharedBuffer3#, 2048
Dim SharedBuffer4#, 2048
Dim SharedBuffer5#, 2048
Dim SharedBuffer6#, 2048
Dim SharedBuffer7#, 2048
Dim SharedBuffer8#, 2048
Dim SharedBuffer9#, 2048
Dim SharedBuffer10#, 2048
Dim SharedBuffer11#, 2048
Dim SharedBuffer12#, 2048
Dim SharedBuffer13#, 2048
Dim SharedBuffer14#, 2048
Dim SharedBuffer15#, 2048
Dim SharedBuffer16#, 2048
Dim SharedBuffer17#, 2048
Dim SharedBuffer18#, 2048
BufferAddr1& = SharedBuffer1#
BufferAddr2& = SharedBuffer2#
BufferAddr3& = SharedBuffer3#
BufferAddr4& = SharedBuffer4#
BufferAddr5& = SharedBuffer5#
BufferAddr6& = SharedBuffer6#
BufferAddr7& = SharedBuffer7#
BufferAddr8& = SharedBuffer8#
BufferAddr9& = SharedBuffer9#
BufferAddr10& = SharedBuffer10#
BufferAddr11& = SharedBuffer11#
BufferAddr12& = SharedBuffer12#
BufferAddr13& = SharedBuffer13#
BufferAddr14& = SharedBuffer14#
BufferAddr15& = SharedBuffer15#
BufferAddr16& = SharedBuffer16#
BufferAddr17& = SharedBuffer17#
BufferAddr18& = SharedBuffer18#
FileMapName1$ = sharedmap1 + @Chr$(0)
FileMapName2$ = sharedmap2 + @Chr$(0)
FileMapName3$ = sharedmap3 + @Chr$(0)
FileMapName4$ = sharedmap4 + @Chr$(0)
FileMapName5$ = sharedmap5 + @Chr$(0)
FileMapName6$ = sharedmap6 + @Chr$(0)
FileMapName7$ = sharedmap7 + @Chr$(0)
FileMapName8$ = sharedmap8 + @Chr$(0)
FileMapName9$ = sharedmap9 + @Chr$(0)
FileMapName10$ = sharedmap10 + @Chr$(0)
FileMapName11$ = sharedmap11 + @Chr$(0)
FileMapName12$ = sharedmap12 + @Chr$(0)
FileMapName13$ = sharedmap13 + @Chr$(0)
FileMapName14$ = sharedmap14 + @Chr$(0)
FileMapName15$ = sharedmap15 + @Chr$(0)
FileMapName16$ = sharedmap16 + @Chr$(0)
FileMapName17$ = sharedmap17 + @Chr$(0)
FileMapName18$ = sharedmap18 + @Chr$(0)
hFileMap1& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName1$))
hFileMap2& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName2$))
hFileMap3& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName3$))
hFileMap4& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName4$))
hFileMap5& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName5$))
hFileMap6& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName6$))
hFileMap7& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName7$))
hFileMap8& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName8$))
hFileMap9& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName9$))
hFileMap10& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName10$))
hFileMap11& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName11$))
hFileMap12& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName12$))
hFileMap13& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName13$))
hFileMap14& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName14$))
hFileMap15& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName15$))
hFileMap16& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName16$))
hFileMap17& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName17$))
hFileMap18& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName18$))
SharedBuffer1# = ~MapViewOfFile(hFileMap1&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer2# = ~MapViewOfFile(hFileMap2&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer3# = ~MapViewOfFile(hFileMap3&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer4# = ~MapViewOfFile(hFileMap4&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer5# = ~MapViewOfFile(hFileMap5&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer6# = ~MapViewOfFile(hFileMap6&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer7# = ~MapViewOfFile(hFileMap7&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer8# = ~MapViewOfFile(hFileMap8&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer9# = ~MapViewOfFile(hFileMap9&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer10# = ~MapViewOfFile(hFileMap10&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer11# = ~MapViewOfFile(hFileMap11&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer12# = ~MapViewOfFile(hFileMap12&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer13# = ~MapViewOfFile(hFileMap13&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer14# = ~MapViewOfFile(hFileMap14&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer15# = ~MapViewOfFile(hFileMap15&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer16# = ~MapViewOfFile(hFileMap16&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer17# = ~MapViewOfFile(hFileMap17&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)
SharedBuffer18# = ~MapViewOfFile(hFileMap18&, ~FILE_MAP_ALL_ACCESS, 0, 0, 0)

PROC sharedclear

    SharedBuffer1# = BufferAddr1&
    SharedBuffer2# = BufferAddr2&
    SharedBuffer3# = BufferAddr3&
    SharedBuffer4# = BufferAddr4&
    SharedBuffer5# = BufferAddr5&
    SharedBuffer6# = BufferAddr6&
    SharedBuffer7# = BufferAddr7&
    SharedBuffer8# = BufferAddr8&
    SharedBuffer9# = BufferAddr9&
    SharedBuffer10# = BufferAddr10&
    SharedBuffer11# = BufferAddr11&
    SharedBuffer12# = BufferAddr12&
    SharedBuffer13# = BufferAddr13&
    SharedBuffer14# = BufferAddr14&
    SharedBuffer15# = BufferAddr15&
    SharedBuffer16# = BufferAddr16&
    SharedBuffer17# = BufferAddr17&
    SharedBuffer18# = BufferAddr18&
    Dispose SharedBuffer1#
    Dispose SharedBuffer2#
    Dispose SharedBuffer3#
    Dispose SharedBuffer4#
    Dispose SharedBuffer5#
    Dispose SharedBuffer6#
    Dispose SharedBuffer7#
    Dispose SharedBuffer8#
    Dispose SharedBuffer9#
    Dispose SharedBuffer10#
    Dispose SharedBuffer11#
    Dispose SharedBuffer12#
    Dispose SharedBuffer13#
    Dispose SharedBuffer14#
    Dispose SharedBuffer15#
    Dispose SharedBuffer16#
    Dispose SharedBuffer17#
    Dispose SharedBuffer18#

ENDPROC


MfG
Andreas

4 kB
Hochgeladen:03/29/08
Downloadcounter148
Download
 
Athlon X2 4800 , 2GB Ram , GeForce 7800GT
Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b
03/29/08  
 



Andreas Gaida
Hi

or one uses joint memory so can quick and easily grosse crowds of data
between several Programs replace or together benefit

...

MfG
Andreas


Jupp, and the against vereinfacht The pipe.unit vastly.  [...] 

PS: Nutze still Arrays - The make whom code kompakter.
 
03/29/08  
 




Andreas
Gaida
How mine You with the the Arrays?
can You Perhaps one small example for supplying circa me on The sprünge To help?

MfG
Andreas
 
Athlon X2 4800 , 2GB Ram , GeForce 7800GT
Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b
03/29/08  
 




Jörg
Sellmeyer
about so:
CompileMarkSeparation
Declare hFileMap&[18]
hFileMap[0]& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName1$))
...
hFileMap[17]& = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName18$))pre>

the should with the Strings too so functions and erspart you The whole Deklarationen and You can The Arrays in a Loop befüllen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03/29/08  
 




Andreas
Gaida
Viellen Thanks.
MfG
Andreas
 
Athlon X2 4800 , 2GB Ram , GeForce 7800GT
Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b
03/29/08  
 




Andreas
Gaida
Thanks the Inspiration of If and the Denk Anstosses of Jörg Sellmeyer here now The extreme verkürzte Version
with up to 100 Shared Buffers

have SharedBuffer# in S_Bereich#  umbenannt Please The new Examples with the Inc use.
CompileMarkSeparation
 $I mem-create-use.inc
Declare Temp1$,Bereich#,ENDE%
STRUCT shared = variable1%,variable2&,variable3!,variable4$(2033)
Dim Bereich#,shared
Init_Shared 2048,50,MASTER Initialisiert den Shared Buffer
Bereich#.variable1% = 32768
Bereich#.variable2& = 2147483647
Bereich#.variable3! = 123.456
Bereich#.variable4$ = und noch ein weiterer test
Window 0,400-500,450
Windowtitle Master
string S_Bereich#[1],0 = das ist ein test
long   S_Bereich#[2],0 = 123456789
S_Bereich#[3] = Bereich#
Bereich# = S_Bereich#[3]
print  @String$(S_Bereich#[1],0)
print  @long   (S_Bereich#[2],0)
print Bereich#.variable1%
print Bereich#.variable2&
print Bereich#.variable3!
print Bereich#.variable4$
settimer 250

WHILENOT ENDE%

    WAITINPUT
    locate 10,1
    clear S_Bereich#[3]
    clear S_Bereich#[4]
    Bereich#.variable2& = &GetTickCount
    Bereich#.variable4$ = @Time$(0)+:+ @Time$(1)
    S_Bereich#[3] = Bereich#
    Bereich#.variable2& = 1234567890
    Bereich#.variable4$ = qwertzuiopüasdfghjkl
    S_Bereich#[4] = Bereich#

ENDWHILE

Clear_Shared 50 Löscht die angegebene anzahl von Buffern
Dispose area#

CompileMarkSeparation
 $I mem-create-use.inc
Declare Temp1$,area#,ENDE%
Init_Shared 2048,50,SLAVE
STRUCT shared = variable1%,variable2&,variable3!,variable4$(2033)
Dim area#,shared
Window 520,400-500,450
Windowtitle Slave
settimer 50

WHILENOT ENDE%

    WAITINPUT
    locate 10,1
    print
    print
    locate 10,1
    area# = S_Bereich#[3]
    print area#.variable2&
    print area#.variable4$
    area# = S_Bereich#[4]
    print area#.variable2&
    print area#.variable4$

ENDWHILE


CompileMarkSeparation
mem-create-use.inc
 $H windows.ph
Declare FileMapName$[100],BufferAddr&[100],hFileMap&[100],S_Bereich#[100],MapFileSize&[100]

proc Init_Shared

    Parameters groesse&,anzahl&,mode$ Size the Buffers, amount the Buffer, mode
    Dim S_Bereich#[],2048

    WhileLoop anzahl&

        MapFileSize&[&Loop] = groesse&

    EndWhile

    WhileLoop anzahl&

        BufferAddr&[&Loop] = S_Bereich#[&Loop]

    EndWhile

    WhileLoop anzahl&

        FileMapName$[&Loop] = sharedmap + STR$(&Loop) + @Chr$(0)

    EndWhile

    If mode$ = MASTER with MASTER becomes the memory only prepares

        WhileLoop anzahl&

            hFileMap&[&Loop] = ~CreateFileMapping($FFFFFFFF, 0, ~PAGE_READWRITE, 0,MapFileSize&[&Loop], @Addr(FileMapName$[&Loop]))

        EndWhile

    Elseif mode$ = SLAVE

    Endif

    WhileLoop anzahl&

        hFileMap&[&Loop] = ~OpenFileMapping(~FILE_MAP_ALL_ACCESS, 0, @Addr(FileMapName$[&Loop]))

    EndWhile

    WhileLoop anzahl&

        S_Bereich#[&Loop] = ~MapViewOfFile(hFileMap&[&Loop], ~FILE_MAP_ALL_ACCESS, 0, 0, 0)

    EndWhile

Endproc

PROC Clear_Shared

    Parameters anzahl&

    WhileLoop anzahl&

        S_Bereich#[&Loop] = BufferAddr&[&Loop]

    EndWhile

    Dispose S_Bereich#[]

ENDPROC

 
Athlon X2 4800 , 2GB Ram , GeForce 7800GT
Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b
03/29/08  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

4.613 Views

Untitledvor 0 min.
H.Brill05/24/20
Ernst05/12/14
Peter Max Müller08/21/13
Michael Borowiak07/19/11

Themeninformationen



Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie