📄 main.pas
字号:
{*******************************************************************************
* LAN Explorer 1.5 Copyright 2001-2003 zhuwei, all rights reserved.
* e-mail:zw84611@sina.com
*******************************************************************************}
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ToolWin, ComCtrls, ExtCtrls, Menus, StdCtrls, Tabs, ImgList,Inifiles,
Buttons,ShlObj,MultiSearchThreadUnit,ShellApi,CommCtrl, ClipBrd, Spin,
FmxUtils{, TrayIcon}, WinSock;
type
TMainForm = class(TForm)
CoolBar1: TCoolBar;
MainMenu: TMainMenu;
MenuTools: TMenuItem;
MenuAbout: TMenuItem;
StatusBar: TStatusBar;
ImageList1: TImageList;
ListViewPopupMenu: TPopupMenu;
N_Open: TMenuItem;
N_Copy: TMenuItem;
N_Size: TMenuItem;
N_OpenWithNotpad: TMenuItem;
N1: TMenuItem;
N_Refresh: TMenuItem;
N_Favorite: TMenuItem;
N_NewWin: TMenuItem;
ClientPanel: TPanel;
N_CopyTo: TMenuItem;
BottomPopupMenu: TPopupMenu;
N_SaveAll: TMenuItem;
SaveDlg: TSaveDialog;
MenuView: TMenuItem;
Menu_Tree: TMenuItem;
Menu_Result: TMenuItem;
Menu_About: TMenuItem;
N_BottomOpen: TMenuItem;
N_BottomCopy: TMenuItem;
N_BottomCopyTo: TMenuItem;
N_BottomFileSize: TMenuItem;
N_Property: TMenuItem;
Splitter1: TSplitter;
CliePanel: TPanel;
ClientPageCtrl: TPageControl;
ShareTabSheet: TTabSheet;
BrowseListView: TListView;
LanTreePopupMenu: TPopupMenu;
N_LanTreeRefresh: TMenuItem;
N_SaveFavo: TMenuItem;
N_FindIP: TMenuItem;
Menu_IPForm: TMenuItem;
N3: TMenuItem;
N_Del: TMenuItem;
N_SelectAll: TMenuItem;
N_Begin_Search_With: TMenuItem;
ToolBar1: TToolBar;
ToolBtnConfig: TToolButton;
Menu_Help: TMenuItem;
Splitter2: TSplitter;
BottomPanel: TPanel;
BottomPageCtrl: TPageControl;
AllFileTabSheet: TTabSheet;
FindTabSheet: TTabSheet;
FindListView: TListView;
Mp3TabSheet: TTabSheet;
Mp3ListView: TListView;
MovieTabSheet: TTabSheet;
MovieListView: TListView;
LeftPanel: TPanel;
LeftPageCtrl: TPageControl;
SearchTabSheet: TTabSheet;
FavoTabSheet: TTabSheet;
FavoTree: TTreeView;
SearchHostTabSheet: TTabSheet;
Panel1: TPanel;
STPanel: TPanel;
Label1: TLabel;
BtnFind: TSpeedButton;
Edit1: TEdit;
ChoiceRadio: TRadioGroup;
FindTree: TTreeView;
pnlHeader: TPanel;
N_BottomOpenDir: TMenuItem;
N_Paste: TMenuItem;
N_Delete: TMenuItem;
N4: TMenuItem;
HistoryTabSheet: TTabSheet;
HistoryTree: TTreeView;
N_Clear: TMenuItem;
N_Sys: TMenuItem;
Menu_Find: TMenuItem;
Menu_Dos: TMenuItem;
N_SaveTree: TMenuItem;
MenuSearch: TMenuItem;
Menu_Search_Config: TMenuItem;
Splitter3: TSplitter;
AllListBox: TListBox;
ShareListView: TListView;
Menu_Nbtstat: TMenuItem;
ToolBtnNbt: TToolButton;
SearchPageCtrl: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
ToolBtnScanPort: TToolButton;
Menu_ScanPort: TMenuItem;
Menu_Ping: TMenuItem;
ToolBtnPing: TToolButton;
Panel3: TPanel;
IpTree: TTreeView;
Panel2: TPanel;
edtIP1: TEdit;
edtIP2: TEdit;
Label2: TLabel;
Label3: TLabel;
ToolButton1: TToolButton;
Panel4: TPanel;
SearchTree: TTreeView;
Panel5: TPanel;
cbBegin: TComboBox;
cbEnd: TComboBox;
Label4: TLabel;
Label5: TLabel;
ToolBar4: TToolBar;
ToolBtnSearcIP: TToolButton;
btnIP: TToolButton;
ToolBtnSendMsg: TToolButton;
Menu_SendMsg: TMenuItem;
N_SendMsg: TMenuItem;
Menu_NbtHistory: TMenuItem;
Splitter4: TSplitter;
Splitter5: TSplitter;
Splitter6: TSplitter;
ToolBar3: TToolBar;
ToolBtnRefresh: TToolButton;
ToolBtnAuto: TToolButton;
ToolPanel: TPanel;
IconCheckBox: TCheckBox;
MenuCheckBox: TCheckBox;
ToolBtnBack: TToolButton;
ToolBtnNext: TToolButton;
ToolButton2: TToolButton;
ToolBtnUp: TToolButton;
cbScanMode: TComboBox;
Label6: TLabel;
cbNewRoot: TCheckBox;
ToolBtnIpHelp: TToolButton;
Panel6: TPanel;
cbSaveHistory: TCheckBox;
cbSaveOpt: TCheckBox;
ToolBtnHostIP: TToolButton;
N_Sort_Name: TMenuItem;
N2: TMenuItem;
N_View_List: TMenuItem;
N_View_SmallIcon: TMenuItem;
N_View: TMenuItem;
N_Sort: TMenuItem;
btnSetAddr: TButton;
btnAddrUp: TSpeedButton;
btnAddrDown: TSpeedButton;
procedure FormCreate(Sender: TObject);
//procedure BottomDockPanelEndDock(Sender, Target: TObject; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ShareListViewClick(Sender: TObject);
procedure ShareListViewSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure ClientPageCtrlChange(Sender: TObject);
procedure N_OpenClick(Sender: TObject);
procedure N_CopyClick(Sender: TObject);
procedure ListViewPopupMenuPopup(Sender: TObject);
procedure N_SizeClick(Sender: TObject);
procedure N_OpenWithNotpadClick(Sender: TObject);
procedure N_NewWinClick(Sender: TObject);
procedure N_FavoriteClick(Sender: TObject);
procedure SearchTreeClick(Sender: TObject);
procedure FavoTreeClick(Sender: TObject);
procedure N_RefreshClick(Sender: TObject);
procedure N_CopyToClick(Sender: TObject);
procedure N_SaveAllClick(Sender: TObject);
procedure Menu_TreeClick(Sender: TObject);
procedure Menu_ResultClick(Sender: TObject);
procedure Menu_AboutClick(Sender: TObject);
procedure IconCheckBoxClick(Sender: TObject);
procedure AllListBoxDblClick(Sender: TObject);
procedure FindListViewDblClick(Sender: TObject);
procedure Mp3ListViewDblClick(Sender: TObject);
procedure MovieListViewDblClick(Sender: TObject);
procedure N_BottomOpenClick(Sender: TObject);
procedure N_BottomCopyClick(Sender: TObject);
procedure BottomPopupMenuPopup(Sender: TObject);
procedure N_BottomFileSizeClick(Sender: TObject);
procedure N_BottomCopyToClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure N_PropertyClick(Sender: TObject);
procedure LanTreePopupMenuPopup(Sender: TObject);
procedure N_LanTreeRefreshClick(Sender: TObject);
procedure N_SaveFavoClick(Sender: TObject);
procedure N_FindIPClick(Sender: TObject);
procedure Menu_IPFormClick(Sender: TObject);
procedure BtnFindClick(Sender: TObject);
procedure ChoiceRadioClick(Sender: TObject);
procedure LeftPageCtrlChange(Sender: TObject);
procedure FindTreeClick(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure N_DelClick(Sender: TObject);
procedure N_SelectAllClick(Sender: TObject);
procedure N_Begin_Search_WithClick(Sender: TObject);
procedure ToolBtnConfigClick(Sender: TObject);
procedure Menu_HelpClick(Sender: TObject);
procedure N_BottomOpenDirClick(Sender: TObject);
procedure N_PasteClick(Sender: TObject);
procedure N_DeleteClick(Sender: TObject);
procedure HistoryTreeClick(Sender: TObject);
procedure N_ClearClick(Sender: TObject);
procedure N_SysClick(Sender: TObject);
procedure Menu_FindClick(Sender: TObject);
procedure Menu_DosClick(Sender: TObject);
procedure N_SaveTreeClick(Sender: TObject);
procedure Menu_Search_ConfigClick(Sender: TObject);
procedure ShareListViewResize(Sender: TObject);
procedure BrowseListViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure MenuCheckBoxClick(Sender: TObject);
procedure Menu_NbtstatClick(Sender: TObject);
procedure ToolBtnNbtClick(Sender: TObject);
procedure IpTreeClick(Sender: TObject);
procedure Menu_ScanPortClick(Sender: TObject);
procedure ToolBtnScanPortClick(Sender: TObject);
procedure Menu_PingClick(Sender: TObject);
procedure ToolBtnPingClick(Sender: TObject);
procedure ToolBtnRefreshClick(Sender: TObject);
procedure ToolBtnAutoClick(Sender: TObject);
procedure btnIPClick(Sender: TObject);
procedure ToolBtnSearcIPClick(Sender: TObject);
procedure Menu_SendMsgClick(Sender: TObject);
procedure ToolBtnSendMsgClick(Sender: TObject);
procedure N_SendMsgClick(Sender: TObject);
procedure Menu_NbtHistoryClick(Sender: TObject);
procedure ToolBtnBackClick(Sender: TObject);
procedure ToolBtnNextClick(Sender: TObject);
procedure ToolBtnUpClick(Sender: TObject);
procedure ToolBtnIpHelpClick(Sender: TObject);
procedure ToolBtnHostIPClick(Sender: TObject);
procedure N_Sort_NameClick(Sender: TObject);
procedure N_View_ListClick(Sender: TObject);
procedure N_View_SmallIconClick(Sender: TObject);
procedure btnSetAddrClick(Sender: TObject);
procedure btnAddrUpClick(Sender: TObject);
procedure btnAddrDownClick(Sender: TObject);
//procedure ToolBtnSeachIPClick(Sender: TObject);
private
{ Private declarations }
ini: Tinifile;
//f: TextFile;
TabSheetX: TTabSheet;
CurRlistItem:TListItem;
TemTreeNode:TTreeNode;
CurBottomListView:TListView;
FileList: TStringList;
CurTree:TTreeView;
FOriginalPageControlWndProc1: TWndMethod;
FOriginalPageControlWndProc3: TWndMethod;
FOriginalPageControlWndProc4: TWndMethod;
FOriginalPageControlWndProc5: TWndMethod;
//TrayIcon: TTrayIcon;
IsDoPrevNext: boolean;
procedure OpenIni;
procedure SaveIni;
procedure OpenFavorite;
procedure SaveFavorite;
procedure MyListViewClick(Sender: TObject);
procedure MyBottomListViewClick(ListView:TListView);
procedure LanTreeClick(LanTree:TTreeView);
procedure PageControlWndProc1(var Message: TMessage);
procedure PageControlWndProc3(var Message: TMessage);
procedure PageControlWndProc4(var Message: TMessage);
procedure PageControlWndProc5(var Message: TMessage);
procedure DisposeLanTree(DTree:TTreeView);
procedure DisposeListView;
procedure DisposeTabData;
procedure DisposeRightList(LV: TListView);
procedure OpenHistory;
procedure SaveHistory;
procedure ChangeBtnStatus;
public
{ Public declarations }
bNotAutoSaveNbt: boolean;
CurDirName,CurGroupName:string;
CurListView: TListView;
StrListAll,StrListSearch,StrListMp3,StrListMovie:TStringList;
CurDirItem: TListItem;
procedure CheckFile(FileName,MyDir,MyGroup:string;ImageIndex: integer);
procedure AddCap(group: string; dir: string);
function GroupFunc(s: string): string;
procedure ShowToolsForm(index: integer);
end;
type FileType = (IsFile, IsDir);
type OwnerType = (InTreeView,InListView);
type
PMyTreeItem = ^TMyTreeItem;
TMyTreeItem = record
DirName,Group: string;
TabIndex: integer;
MyClientListView:TListView;
MyRightListItem:TListItem;
end;
type
PListItem = ^TMyListItem;
TMyListItem = record
//dirName,group: string;
index,count: integer;
PrevDirItem, NextDirItem, UpDirItem: TListItem;
end;
type
PFileItem = ^TMyFileItem;
TMyFileItem = record
ftype:FileType;
size: integer;
end;
type
pTabData = ^TMyTabData;
TMyTabData=record
MyGroup,MyDir:string;
MyRListItem:TListItem;
end;
TExecuteThread=class(TThread)
public
ExeFile,ExeDir:string;
protected
procedure Execute; override;
//Procedure Adddir;
end;
function GetImgIndex(s:string):integer;
var
MainForm : TMainForm;
AppDir : String;
GroupList : array[0..500]of string;
GroupNum,SearchBeginNum,SearchCount,FinishNum,ThreadNum: integer;
CanOpen : Boolean;
//MyItemPtr : PMyTreeItem;
//ListItemPtr : PListItem;
//TabDataPtr : pTabData;
//fPtr : pFileItem;
recursive,stop,bAutoSearch,bSysIcon,bNT: boolean;
OS : OSType;
bk : TBitmap;
ScanPort_IP1, ScanPort_IP2 : string;
Ping_IP1, Ping_IP2 : string;
Nbt_IP1, Nbt_IP2 : string;
CopyFileList: TStringList;
implementation
uses GetDomainThreadUnit,SearchGroupThreadUnit,SearchHostThreadUnit,
SearchDirThreadunit,ConFig,CopyTo,Tools,About,ItemProp,
SearchHosts;
{$R *.DFM}
function GetImgIndex(s:string):integer;
var
//i:integer;
extn:string;
begin
result:=1;
extn:=lowercase(ExtractFileExt(s));
if (extn='.txt')or(extn='.log') then result:= 48 else
if extn='.bmp' then result:= 49 else
if (extn='.exe')or(extn='.com') then result:= 74 else
if (extn='.htm')or(extn='.html')or(extn='.shtml')or(extn='.plg') then result:= 53 else
if (extn='.jpg')or(extn='.jpeg') then result:= 55 else
if extn='.pdf' then result:= 57 else
if extn='.ppt' then result:= 58 else
if (extn='.dll')or(extn='.sys') then result:= 59 else
if (extn='.doc')or(extn='.rtf') then result:= 61 else
if (extn='.zip')or(extn='.gz')or(extn='.tar')or(extn='.z')or(extn='.tgz') then result:= 62 else
if (extn='.rar')or(extn='.iso')or(extn='.cab') then result:= 66 else
if (extn='.mp3')or(extn='.wsz')or(extn='.wma')or(extn='.m3u') then result:= 35 else
if (extn='.mpg')or(extn='.mpeg')or(extn='.avi')or(extn='.asx') then result:= 78 else
if (extn='.rm')or(extn='.rmvb')or(extn='.ram')or(extn='.ra') then result:= 79 else
if (extn='.dsw')or(extn='.dsp') then result:= 67 else
if extn='.chm' then result:= 68 else
if extn='.ps' then result:= 63 else
if extn='.hlp' then result:= 65 else
if extn='.bat' then result:= 60 else
if (extn='.ini')or(extn='.inf') then result:= 54 else
if extn='.c' then result:= 69 else
if extn='.gif' then result:= 70 else
if extn='.h' then result:= 71 else
if extn='.dpr' then result:= 72 else
if extn='.cpp' then result:= 50 else
if extn='.dcu' then result:= 51 else
if extn='.pas' then result:= 56 else
if (extn='.obj')or(extn='.ilk')or(extn='.pch')or(extn='.pdb')or(extn='.idb') then result:= 73 else
if extn='.mid' then result:= 75 else
if extn='.wav' then result:= 76 else
if extn='.m' then result:= 64 else
if (extn='.wmv')or(extn='.asf') then result:= 80 else
if extn='.swf' then result:= 81 else
if extn='.mht' then result:= 82 else
if extn='.sch' then result:= 83 else
if extn='.pcb' then result:= 84 else
if extn='.ddb' then result:= 85 else
if extn='.prj' then result:= 86 else
if extn='.pps' then result:= 87 else
if extn='.xml' then result:= 88 else
if extn='.dsn' then result:= 89 else
if extn='.pot' then result:= 90 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -