📄 form_os.frm
字号:
For i = 1 To 640
If MEM(i).fenqu_zhuangtai <> -1 Then
If MEM(i).fenqu_zhuangtai = 1 Then
If (i Mod 2) = 1 Then
cl = Label4.BackColor
Else
cl = Label5.BackColor
End If
Else
cl = Label6.BackColor
End If
JC = MEM(i).fenqu_huodongjincheng
sz = MEM(i).fenqu_shouzhi
kj = MEM(i).fenqu_changdu
j = sz + 1
If MEM(i).fenqu_zhuangtai = 1 Then
FG.TextMatrix(j, 1) = Str(i)
FG.TextMatrix(j, 2) = Str(MEM(i).fenqu_shouzhi) + "K"
FG.TextMatrix(j, 3) = Str(MEM(i).fenqu_changdu) + "K"
FG.TextMatrix(j, 4) = Str(MEM(i).fenqu_zhuangtai) + "已分配"
FG.TextMatrix(j, 5) = Str(JC) + "号进程"
ElseIf MEM(i).fenqu_zhuangtai = 0 Then
FG.TextMatrix(j, 1) = Str(i)
FG.TextMatrix(j, 2) = Str(MEM(i).fenqu_shouzhi) + "K"
FG.TextMatrix(j, 3) = Str(MEM(i).fenqu_changdu) + "K"
FG.TextMatrix(j, 4) = Str(MEM(i).fenqu_zhuangtai) + "未分配"
FG.TextMatrix(j, 5) = ""
End If
For k = 1 To 5
FG.Col = k
For j = sz + 1 To sz + kj
FG.Row = j
FG.CellBackColor = cl
If j <> sz + 1 Then
FG.TextMatrix(FG.Row, FG.Col) = ""
End If
Next j
Next k
End If
Next
End Sub
Private Sub CMD_HUISHOU_Click()
Dim i As Integer
Dim JC As Integer
Dim p, n As Integer
Dim j As Integer
'回收进程的内存和合并空闲分区
On Error GoTo err_handel
JC = CInt(Text_HUISHOU.Text)
For i = 1 To 640
If MEM(i).fenqu_huodongjincheng = JC Then
'既无上邻又无下邻
MEM(i).fenqu_huodongjincheng = 0
MEM(i).fenqu_zhuangtai = 0
jincheng(JC) = 0
If i = 1 Then
n = 0
'找下一个相连的分区
For j = 1 To 640
If MEM(i).fenqu_shouzhi + MEM(i).fenqu_changdu = MEM(j).fenqu_shouzhi Then
If MEM(j).fenqu_zhuangtai = 0 Then
n = j
End If
Exit For
End If
Next j
If n <> 0 Then
'有下邻
MEM(i).fenqu_changdu = MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
MEM(n).fenqu_zhuangtai = -1
End If
ElseIf i = 640 Then
p = 0
'找上一个相连的分区
For j = 1 To 640
If MEM(j).fenqu_shouzhi + MEM(j).fenqu_changdu = MEM(i).fenqu_shouzhi Then
If MEM(j).fenqu_zhuangtai = 0 Then
p = j
End If
Exit For
End If
Next j
If p <> 0 Then
''有上邻
MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu
MEM(i).fenqu_zhuangtai = -1
End If
Else
p = 0
n = 0
'找上一个相连的分区
For j = 1 To 640
If MEM(j).fenqu_shouzhi + MEM(j).fenqu_changdu = MEM(i).fenqu_shouzhi Then
If MEM(j).fenqu_zhuangtai = 0 Then
p = j
End If
Exit For
End If
Next j
'找下一个相连的分区
For j = 1 To 640
If MEM(i).fenqu_shouzhi + MEM(i).fenqu_changdu = MEM(j).fenqu_shouzhi Then
If MEM(j).fenqu_zhuangtai = 0 Then
n = j
End If
Exit For
End If
Next j
If p <> 0 And n <> 0 Then
'既有上邻又有下邻
MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
MEM(i).fenqu_zhuangtai = -1
MEM(n).fenqu_zhuangtai = -1
ElseIf p <> 0 Then
''只有上邻
MEM(p).fenqu_changdu = MEM(p).fenqu_changdu + MEM(i).fenqu_changdu
MEM(i).fenqu_zhuangtai = -1
ElseIf n <> 0 Then
'只有下邻
MEM(i).fenqu_changdu = MEM(i).fenqu_changdu + MEM(n).fenqu_changdu
MEM(n).fenqu_zhuangtai = -1
End If
End If
Call refrensh_form
Exit Sub
End If
Next
Call MsgBox("不存在这个进程!", vbCritical)
Exit Sub
err_handel:
Call MsgBox("不存在这个进程!", vbCritical)
End Sub
Private Sub Form_Load()
Dim i As Integer
FG.ColWidth(1) = 1800
FG.ColWidth(2) = 1800
FG.ColWidth(3) = 1800
FG.ColWidth(4) = 1800
FG.ColWidth(5) = 1800
FG.TextMatrix(0, 0) = "内存地址"
FG.TextMatrix(0, 1) = "分区号"
FG.TextMatrix(0, 2) = "分区首址"
FG.TextMatrix(0, 3) = "分区长度"
FG.TextMatrix(0, 4) = "分配状态"
FG.TextMatrix(0, 5) = "活动进程"
Me.Top = 0
Me.Left = 0
For i = 0 To 639
FG.TextMatrix(i + 1, 0) = Str(i) + "K"
Next
For i = 1 To 640
MEM(i).fenqu_zhuangtai = -1
Next
MEM(1).fenqu_shouzhi = 0
MEM(1).fenqu_changdu = 640
MEM(1).fenqu_zhuangtai = 0
MEM(1).fenqu_huodongjincheng = 0
App.Title = "存储管理器"
End Sub
Sub delay_TIME(ByVal i As Integer)
'延迟i秒
Dim t1, t2 As Long
t1 = Timer()
t2 = t1
Do While (t2 - t1 < i)
DoEvents
t2 = Timer()
Loop
End Sub
Private Sub men_home_Click()
Call netnetopen_FILEpageIE("http://www.kaoke.com")
End Sub
Private Sub menu_about_Click()
Call MsgBox("作者:顾熙杰" + vbCrLf + "考客主页:http://www.kaoke.com", 48)
End Sub
Private Sub menu_exit_Click()
Unload Me
End Sub
Private Sub menu_help_help_Click()
Call netnetopen_FILEpageIE(App.Path + "\help.htm")
End Sub
Public Sub netnetopen_FILEpageIE(ByVal address As String)
Dim i As Integer
On Error GoTo ErrHandler
'外浏览器访问网页
i = ShellExecute(0&, vbNullString, address, vbNullString, vbNullString, vbNormalFocus)
'MsgBox i
'返回10767正确
'返回2,文件不存在
If i = 2 Then
Call MsgBox("文件不存在", 48)
End If
Exit Sub
ErrHandler:
MsgBox Error$
End Sub
Private Sub Option1_Click()
fenPEI_fangfa = 0
End Sub
Private Sub Option2_Click()
fenPEI_fangfa = 1
End Sub
Private Sub Option3_Click()
fenPEI_fangfa = 2
End Sub
Function find_pri_block(ByVal b As Integer) As Integer
'寻找上邻区
Dim i As Integer
For i = b - 1 To 1 Step -1
If MEM(i).fenqu_zhuangtai <> -1 Then
find_pri_block = i
Exit Function
End If
Next
End Function
Function find_next_block(ByVal b As Integer) As Integer
'寻找下邻区
Dim i As Integer
For i = b + 1 To 640
If MEM(i).fenqu_zhuangtai <> -1 Then
find_next_block = i
Exit Function
End If
Next
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -