diff --git a/deb/opt/apps/deepin-wine-runner/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/AutoConfig.py index 747fe43..cad74e5 100755 --- a/deb/opt/apps/deepin-wine-runner/AutoConfig.py +++ b/deb/opt/apps/deepin-wine-runner/AutoConfig.py @@ -20,7 +20,14 @@ import PyQt5.QtWidgets as QtWidgets from UI.AutoConfig import * from Model import * -urlSources = "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto" +urlSourcesList = [ + "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto", # Gitlink 源 + "https://gitee.com/gfdgd-xi/deep-wine-runner-auto-configuration-script/raw/master/", # Gitee 源 + "https://gfdgd-xi.github.io/deep-wine-runner-auto-configuration-script/", # Github 源 + "http://gfdgdxi.msns.cn/wine-runner-list/auto/", # 备用源,纯 IPv6 源 + "http://127.0.0.1/wine-runner-list/auto/" # 本地测试源 +] +urlSources = urlSourcesList[0] lists = [] class ProgramRunStatusUpload(): msgWindow = None @@ -319,6 +326,26 @@ def readtxt(path): f.close() # 关闭文本对象 return str # 返回结果 +def ChangeSources(): + global urlSources + sources = [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action] + for i in range(0, len(sources)): + if sources[i].isChecked(): + urlSources = urlSourcesList[i] + # 解析云列表 + try: + # 获取列表 + lists = json.loads(requests.get(f"{urlSources}/list.json").text) + # 解释列表并显示在 GUI 上 + nmodel = QtGui.QStandardItemModel(window) + for i in lists: + nmodel.appendRow(QtGui.QStandardItem(i[0])) + ui.searchList.setModel(nmodel) + except: + traceback.print_exc() + QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器") + break + if __name__ == "__main__": homePath = os.path.expanduser('~') programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string @@ -339,6 +366,18 @@ if __name__ == "__main__": window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg")) iconPath = "{}/deepin-wine-runner.svg".format(programPath) window.show() + #ui.actionGitlink.setExclusive(True) + sourcesGroup = QtWidgets.QActionGroup(window) + sourcesGroup.addAction(ui.actionGitlink) + sourcesGroup.addAction(ui.actionGitee) + sourcesGroup.addAction(ui.actionGithub) + sourcesGroup.addAction(ui.action_IPv6) + sourcesGroup.addAction(ui.action) + sourcesGroup.triggered.connect(ChangeSources) + sourcesGroup.setExclusive(True) + #for i in [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action]: + #i.triggered.connect(ChangeSources) + #pass # 连接信号和槽 ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked) ui.uploadFen.clicked.connect(UploadFen) diff --git a/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py index 5defa7b..3f8e282 100644 --- a/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py +++ b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py @@ -50,10 +50,12 @@ class Ui_MainWindow(object): self.verticalLayout_3.addLayout(self.horizontalLayout_2) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 33)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 36)) self.menubar.setObjectName("menubar") self.menu = QtWidgets.QMenu(self.menubar) self.menu.setObjectName("menu") + self.menu_2 = QtWidgets.QMenu(self.menubar) + self.menu_2.setObjectName("menu_2") MainWindow.setMenuBar(self.menubar) self.about = QtWidgets.QAction(MainWindow) self.about.setObjectName("about") @@ -63,10 +65,32 @@ class Ui_MainWindow(object): self.help.setObjectName("help") self.openFile = QtWidgets.QAction(MainWindow) self.openFile.setObjectName("openFile") + self.actionGitlink = QtWidgets.QAction(MainWindow) + self.actionGitlink.setCheckable(True) + self.actionGitlink.setChecked(True) + self.actionGitlink.setObjectName("actionGitlink") + self.actionGitee = QtWidgets.QAction(MainWindow) + self.actionGitee.setCheckable(True) + self.actionGitee.setObjectName("actionGitee") + self.actionGithub = QtWidgets.QAction(MainWindow) + self.actionGithub.setCheckable(True) + self.actionGithub.setObjectName("actionGithub") + self.action_IPv6 = QtWidgets.QAction(MainWindow) + self.action_IPv6.setCheckable(True) + self.action_IPv6.setObjectName("action_IPv6") + self.action = QtWidgets.QAction(MainWindow) + self.action.setCheckable(True) + self.action.setObjectName("action") self.menu.addAction(self.openFile) self.menu.addSeparator() self.menu.addAction(self.exitProgram) + self.menu_2.addAction(self.actionGitlink) + self.menu_2.addAction(self.actionGitee) + self.menu_2.addAction(self.actionGithub) + self.menu_2.addAction(self.action_IPv6) + self.menu_2.addAction(self.action) self.menubar.addAction(self.menu.menuAction()) + self.menubar.addAction(self.menu_2.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -81,8 +105,14 @@ class Ui_MainWindow(object): self.uploadFen.setText(_translate("MainWindow", "提交选中项的评分")) self.runBotton.setText(_translate("MainWindow", "部署此方案")) self.menu.setTitle(_translate("MainWindow", "程序")) + self.menu_2.setTitle(_translate("MainWindow", "切换源")) self.about.setText(_translate("MainWindow", "关于")) self.exitProgram.setText(_translate("MainWindow", "退出程序")) self.help.setText(_translate("MainWindow", "帮助")) self.openFile.setText(_translate("MainWindow", "打开本地部署脚本")) + self.actionGitlink.setText(_translate("MainWindow", "Gitlink 源")) + self.actionGitee.setText(_translate("MainWindow", "Gitee 源")) + self.actionGithub.setText(_translate("MainWindow", "Github 源")) + self.action_IPv6.setText(_translate("MainWindow", "备用源(只限IPv6用户)")) + self.action.setText(_translate("MainWindow", "本地测试源")) diff --git a/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.ui b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.ui index 7c90566..ba0b8f1 100644 --- a/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.ui +++ b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.ui @@ -92,7 +92,7 @@ <x>0</x> <y>0</y> <width>800</width> - <height>33</height> + <height>36</height> </rect> </property> <widget class="QMenu" name="menu"> @@ -103,7 +103,18 @@ <addaction name="separator"/> <addaction name="exitProgram"/> </widget> + <widget class="QMenu" name="menu_2"> + <property name="title"> + <string>切换源</string> + </property> + <addaction name="actionGitlink"/> + <addaction name="actionGitee"/> + <addaction name="actionGithub"/> + <addaction name="action_IPv6"/> + <addaction name="action"/> + </widget> <addaction name="menu"/> + <addaction name="menu_2"/> </widget> <action name="about"> <property name="text"> @@ -125,6 +136,49 @@ <string>打开本地部署脚本</string> </property> </action> + <action name="actionGitlink"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="text"> + <string>Gitlink 源</string> + </property> + </action> + <action name="actionGitee"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Gitee 源</string> + </property> + </action> + <action name="actionGithub"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>Github 源</string> + </property> + </action> + <action name="action_IPv6"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>备用源(只限IPv6用户)</string> + </property> + </action> + <action name="action"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="text"> + <string>本地测试源</string> + </property> + </action> </widget> <resources/> <connections/> diff --git a/deb/opt/apps/deepin-wine-runner/UI/__pycache__/AutoConfig.cpython-37.pyc b/deb/opt/apps/deepin-wine-runner/UI/__pycache__/AutoConfig.cpython-37.pyc index 1ecf0d4..51e2a89 100644 Binary files a/deb/opt/apps/deepin-wine-runner/UI/__pycache__/AutoConfig.cpython-37.pyc and b/deb/opt/apps/deepin-wine-runner/UI/__pycache__/AutoConfig.cpython-37.pyc differ diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py index 223d37f..f619b76 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py @@ -219,20 +219,29 @@ class make_deb_threading(QtCore.QThread): ][int(chooseWineHelperValue.isChecked())], "postinst": "", "postrm": ["", f"""#!/bin/bash - if [ "$1" = "remove" ] || [ "$1" = "purge" ];then echo "清理卸载残留" -for username in `ls /home` +CONTAINER_NAME="{e5_text.text()}" + +if [ -z $CONTAINER_NAME ];then +echo "W: 没有指定容器,跳过清理容器。请手动前往 ~/.deepinwine/ 下删除" +exit +fi + +/opt/deepinwine/tools/kill.sh $CONTAINER_NAME +###这里注意,如果没写CONTAINER_NAME,会把QQ杀了 + +for username in $(ls /home) do - echo /home/$username - if [ -d "/home/$username/.deepinwine/{e5_text.text()}" ] - then - rm -rf "/home/$username/.deepinwine/{e5_text.text()}" - fi + echo /home/$username + if [ -d /home/$username/.deepinwine/$CONTAINER_NAME ] + then + rm -rf /home/$username/.deepinwine/$CONTAINER_NAME + fi done else - echo "非卸载,跳过清理" +echo "非卸载,跳过清理" fi"""][int(rmBash.isChecked())], "run.sh": [ f"""#!/bin/sh @@ -464,22 +473,312 @@ fi true """, - "postrm": f"""#!/bin/bash + # 因为 arm 不依赖 helper,所以要自带 kill.sh + "kill.sh": """#!/bin/bash +APP_NAME="QQ" +LOG_FILE=$0 +SHELL_DIR=$(dirname $0) +SHELL_DIR=$(realpath "$SHELL_DIR") +if [ $SPECIFY_SHELL_DIR ]; then + SHELL_DIR=$SPECIFY_SHELL_DIR +fi + +PUBLIC_DIR="/var/public" + +UsePublicDir() +{ + if [ -z "$USE_PUBLIC_DIR" ]; then + echo "Don't use public dir" + return 1 + fi + if [ ! -d "$PUBLIC_DIR" ];then + echo "Not found $PUBLIC_DIR" + return 1 + fi + if [ ! -r "$PUBLIC_DIR" ];then + echo "Can't read for $PUBLIC_DIR" + return 1 + fi + if [ ! -w "$PUBLIC_DIR" ];then + echo "Can't write for $PUBLIC_DIR" + return 1 + fi + if [ ! -x "$PUBLIC_DIR" ];then + echo "Can't excute for $PUBLIC_DIR" + return 1 + fi + + return 0 +} + +WINE_BOTTLE="$HOME/.deepinwine" + +if UsePublicDir;then + WINE_BOTTLE="$PUBLIC_DIR" +fi + +get_wine_by_pid() +{ + wine_path=$(cat /proc/$1/maps | grep -E "\/wine$|\/wine64$|\/wine |\/wine64 " | head -1 | awk '{print $6}') + if [ -z "$wine_path" ];then + cat /proc/$1/cmdline| xargs -0 -L1 -I{} echo {} | grep -E "\/wine$|\/wine64$|\/wine |\/wine64 " | head -1 + else + echo $wine_path + fi +} + +is_wine_process() +{ + wine_module=$(get_wine_by_pid $1) + if [ -z "$wine_module" ];then + wine_module=$(cat /proc/$1/maps | grep -E "\/wineserver$" | head -1) + fi + echo $wine_module +} + +get_prefix_by_pid() +{ + WINE_PREFIX=$(xargs -0 printf '%s\n' < /proc/$1/environ | grep WINEPREFIX) + WINE_PREFIX=${WINE_PREFIX##*=} + if [ -z "$WINE_PREFIX" ] && [ -n "$(is_wine_process $1)" ]; then + #不指定容器的情况用默认容器目录 + WINE_PREFIX="$HOME/.wine" + fi + if [ -n "$WINE_PREFIX" ];then + WINE_PREFIX=$(realpath $WINE_PREFIX) + echo $WINE_PREFIX + fi +} + +get_wineserver() +{ + if [ -z "$1" ];then + return + fi + targ_prefix=$(realpath $1) + ps -ef | grep wineserver | while read server_info ;do + debug_log_to_file "get server info: $server_info" + server_pid=$(echo $server_info | awk '{print $2}') + server_prefix=$(get_prefix_by_pid $server_pid) + debug_log_to_file "get server pid $server_pid, prefix: $server_prefix" + + if [ "$targ_prefix" = "$server_prefix" ];then + server=$(echo $server_info | awk '{print $NF}') + if [ "-p0" = "$server" ];then + server=$(echo $server_info | awk '{print $(NF-1)}') + fi + debug_log_to_file "get server $server" + echo $server + return + fi + done +} + +init_log_file() +{ + if [ -d "$DEBUG_LOG" ];then + LOG_DIR=$(realpath $DEBUG_LOG) + if [ -d "$LOG_DIR" ];then + LOG_FILE="${LOG_DIR}/${LOG_FILE##*/}.log" + echo "" > "$LOG_FILE" + debug_log "LOG_FILE=$LOG_FILE" + fi + fi +} + +debug_log_to_file() +{ + if [ -d "$DEBUG_LOG" ];then + strDate=$(date) + echo -e "${strDate}:${1}" >> "$LOG_FILE" + fi +} + +debug_log() +{ + strDate=$(date) + echo "${strDate}:${1}" +} + +init_log_file + +get_bottle_path_by_process_id() +{ + PID_LIST="$1" + PREFIX_LIST="" + + for pid_var in $PID_LIST ; do + WINE_PREFIX=$(get_prefix_by_pid $pid_var) + #去掉重复项 + for path in $(echo -e $PREFIX_LIST) ; do + if [[ $path == "$WINE_PREFIX" ]]; then + WINE_PREFIX="" + fi + done + if [ -d "$WINE_PREFIX" ]; then + debug_log_to_file "found $pid_var : $WINE_PREFIX" + PREFIX_LIST+="\n$WINE_PREFIX" + fi + done + echo -e $PREFIX_LIST +} + +get_pid_by_process_name() +{ + PID_LIST="" + for pid_var in $(ps -ef | grep -E -i "$1" | grep -v grep | awk '{print $2}');do + #通过判断是否加载wine来判断是不是wine进程 + if [ -n "$(is_wine_process $pid_var)" ];then + PID_LIST+=" $pid_var" + fi + done + echo "$PID_LIST" +} + +get_bottle_path_by_process_name() +{ + PID_LIST=$(get_pid_by_process_name $1) + debug_log_to_file "get pid list: $PID_LIST" + get_bottle_path_by_process_id "$PID_LIST" +} + +get_bottle_path() +{ + if [ -z "$1" ];then + return 0 + fi + + if [ -f "$1/user.reg" ]; then + realpath "$1" + return 0 + fi + + if [ -f "$WINE_BOTTLE/$1/user.reg" ]; then + realpath "$WINE_BOTTLE/$1" + return 0 + fi + get_bottle_path_by_process_name "$1" +} + +kill_app() +{ + debug_log "try to kill $1" + for path in $(get_bottle_path $1); do + if [ -n "$path" ];then + WINESERVER=$(get_wineserver "$path") + + if [ -f "$WINESERVER" ];then + debug_log "kill $path by $WINESERVER" + env WINEPREFIX="$path" "$WINESERVER" -k + fi + + PID_LIST=$(get_pid_by_process_name "exe|wine") + for tag_pid in $PID_LIST; do + bottle=$(get_bottle_path_by_process_id "$tag_pid") + bottle=${bottle:1} + if [ "$path" = "$bottle" ];then + echo "kill $tag_pid for $bottle" + kill -9 $tag_pid + fi + done + fi + done + + #Kill defunct process + ps -ef | grep -E "$USER.*exe.*<defunct>" + ps -ef | grep -E "$USER.*exe.*<defunct>" | grep -v grep | awk '{print $2}' | xargs -i kill -9 {} +} + +get_tray_window() +{ + $SHELL_DIR/get_tray_window | grep window_id: | awk -F: '{print $2}' +} + +get_stacking_window() +{ + xprop -root _NET_CLIENT_LIST_STACKING | awk -F# '{print $2}' | sed -e 's/, / /g' +} + +get_window_pid() +{ + for winid in $(echo "$1" | sed -e 's/ /\n/g') ; + do + xprop -id $winid _NET_WM_PID | awk -F= '{print $2}' + done +} + +get_window_bottle() +{ + debug_log_to_file "get_window_bottle $1" + PID_LIST=$(get_window_pid "$1") + debug_log_to_file "get_window_bottle pid list: $PID_LIST" + get_bottle_path_by_process_id "$PID_LIST" +} + +get_active_bottles() +{ + TRAYWINDOWS=$(get_tray_window) + STACKINGWINDOWS=$(get_stacking_window) + debug_log_to_file "tray window id: $TRAYWINDOWS" + debug_log_to_file "stacking window id: $STACKINGWINDOWS" + PID_LIST="$TRAYWINDOWS $STACKINGWINDOWS" + get_window_bottle "$PID_LIST" +} + +kill_exit_block_app() +{ + TAGBOTTLE=$(get_bottle_path $1) + debug_log "tag bottle: $TAGBOTTLE" + ACTIVEBOTTLES=$(get_active_bottles) + debug_log "active bottles: $ACTIVEBOTTLES" + + if [[ "$ACTIVEBOTTLES" != *"$TAGBOTTLE"* ]]; then + kill_app "$TAGBOTTLE" + fi +} + +#get_active_bottles +#exit + +debug_log "kill $1 $2" + +if [ -n "$1" ]; then + APP_NAME="$1" +fi + +if [ "$2" = "block" ]; then + kill_exit_block_app $APP_NAME $3 +else + kill_app $APP_NAME +fi +""", + "postrm": f"""#!/bin/bash if [ "$1" = "remove" ] || [ "$1" = "purge" ];then echo "清理卸载残留" -for username in `ls /home` +CONTAINER_NAME="{e5_text.text()}" + +if [ -z $CONTAINER_NAME ];then +echo "W: 没有指定容器,跳过清理容器。请手动前往 ~/.deepinwine/ 下删除" +exit +fi + +/opt/apps/{e1_text.text()}/kill.sh $CONTAINER_NAME +###这里注意,如果没写CONTAINER_NAME,会把QQ杀了 + +for username in $(ls /home) do - echo /home/$username - if [ -d "/home/$username/.deepinwine/{e5_text.text()}" ] - then - rm -rf "/home/$username/.deepinwine/{e5_text.text()}" - fi + echo /home/$username + if [ -d /home/$username/.deepinwine/$CONTAINER_NAME ] + then + rm -rf /home/$username/.deepinwine/$CONTAINER_NAME + fi done else - echo "非卸载,跳过清理" -fi""", +echo "非卸载,跳过清理" +fi +""", "run_with_box86.sh": f"""#!/bin/bash DEB_PATH="/opt/apps/{e1_text.text()}" WINE="/opt/deepin-wine6-stable/bin/wine" @@ -975,6 +1274,7 @@ Description: {e3_text.text()} if debArch.currentIndex() == 0: write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/run.sh", debInformation[debArch.currentIndex()]["run.sh"]) if debArch.currentIndex() == 1: + write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/kill.sh", debInformation[debArch.currentIndex()]["kill.sh"]) write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/run_with_box86.sh", debInformation[debArch.currentIndex()]["run_with_box86.sh"]) write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/run_with_exagear.sh", debInformation[debArch.currentIndex()]["run_with_exagear.sh"]) write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), debInformation[debArch.currentIndex()]["info"]) @@ -986,6 +1286,7 @@ Description: {e3_text.text()} self.run_command("chmod -Rv 644 {}/opt/apps/{}/info".format(debPackagePath, e1_text.text())) self.run_command("chmod -Rv 0755 {}/DEBIAN".format(debPackagePath)) self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text())) + self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/kill.sh".format(debPackagePath, e1_text.text())) self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/run_with_box86.sh".format(debPackagePath, e1_text.text())) self.run_command("chmod -Rv 755 {}/opt/apps/{}/files/run_with_exagear.sh".format(debPackagePath, e1_text.text())) self.run_command("chmod -Rv 755 {}/opt/apps/{}/entries/applications/{}.desktop".format(debPackagePath, e1_text.text(), e1_text.text())) @@ -994,7 +1295,7 @@ Description: {e3_text.text()} ################ if not self.build: self.label.emit("正在构建 deb 包……") - self.run_command("bash -c 'dpkg -b {} {}'".format(debPackagePath, e12_text.text())) + self.run_command("bash -c 'dpkg -b \"{}\" \"{}\"'".format(debPackagePath, e12_text.text())) ################ # 完成构建 ################ diff --git a/deb/opt/apps/deepin-wine-runner/package-script.zip b/deb/opt/apps/deepin-wine-runner/package-script.zip index ec6b06f..1f363e4 100755 Binary files a/deb/opt/apps/deepin-wine-runner/package-script.zip and b/deb/opt/apps/deepin-wine-runner/package-script.zip differ diff --git a/deb/opt/apps/deepin-wine-runner/wine/installwine b/deb/opt/apps/deepin-wine-runner/wine/installwine index 317ecb9..18c7420 100755 --- a/deb/opt/apps/deepin-wine-runner/wine/installwine +++ b/deb/opt/apps/deepin-wine-runner/wine/installwine @@ -308,7 +308,11 @@ def get_now_lang()->"获取当前语言": if __name__ == "__main__": localJsonList = [] internetJsonList = [] - internetWineSource = "https://code.gitlink.org.cn/gfdgd_xi/wine-mirrors/raw/branch/master/" + internetWineSource = [ + "https://code.gitlink.org.cn/gfdgd_xi/wine-mirrors/raw/branch/master/", + "http://gfdgdxi.msns.cn/wine-mirrors/", # 备用源,纯 IPv6 源 + "http://127.0.0.1/wine-mirrors/" # 本地测试源 + ][1] app = QtWidgets.QApplication(sys.argv) # 读取翻译 if not get_now_lang() == "zh_CN.UTF-8": diff --git a/demo/CheckNet/CheckNet.sln b/demo/CheckNet/CheckNet.sln new file mode 100755 index 0000000..80f66ec --- /dev/null +++ b/demo/CheckNet/CheckNet.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +# SharpDevelop 5.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CheckNet", "CheckNet\CheckNet.csproj", "{1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/demo/CheckNet/CheckNet/CheckNet.csproj b/demo/CheckNet/CheckNet/CheckNet.csproj new file mode 100755 index 0000000..10fc16b --- /dev/null +++ b/demo/CheckNet/CheckNet/CheckNet.csproj @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> + <PropertyGroup> + <ProjectGuid>{1E44CD7F-9E68-4C36-9EFF-7E9125086F2C}</ProjectGuid> + <ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <OutputType>WinExe</OutputType> + <RootNamespace>CheckNet</RootNamespace> + <AssemblyName>CheckNet</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <AppDesignerFolder>Properties</AppDesignerFolder> + </PropertyGroup> + <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> + <PlatformTarget>x86</PlatformTarget> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <OutputPath>bin\Debug\</OutputPath> + <DebugSymbols>True</DebugSymbols> + <DebugType>Full</DebugType> + <Optimize>False</Optimize> + <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> + <DefineConstants>DEBUG;TRACE</DefineConstants> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <OutputPath>bin\Release\</OutputPath> + <DebugSymbols>False</DebugSymbols> + <DebugType>None</DebugType> + <Optimize>True</Optimize> + <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> + <DefineConstants>TRACE</DefineConstants> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.CSharp"> + <RequiredTargetFramework>4.0</RequiredTargetFramework> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="MainForm.cs" /> + <Compile Include="MainForm.Designer.cs"> + <DependentUpon>MainForm.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="MainForm.resx"> + <DependentUpon>MainForm.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project> \ No newline at end of file diff --git a/demo/CheckNet/CheckNet/MainForm.Designer.cs b/demo/CheckNet/CheckNet/MainForm.Designer.cs new file mode 100755 index 0000000..626dffd --- /dev/null +++ b/demo/CheckNet/CheckNet/MainForm.Designer.cs @@ -0,0 +1,290 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 17:22 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +namespace CheckNet +{ + partial class MainForm + { + /// <summary> + /// Designer variable used to keep track of non-visual components. + /// </summary> + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ColorDialog colorDialog1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.FontDialog fontDialog1; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.ProgressBar progressBar2; + private System.Windows.Forms.TrackBar trackBar1; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + private System.Windows.Forms.MonthCalendar monthCalendar1; + private System.Windows.Forms.CheckedListBox checkedListBox1; + private System.Windows.Forms.DateTimePicker dateTimePicker1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.MaskedTextBox maskedTextBox1; + + /// <summary> + /// Disposes resources used by the form. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing) { + if (components != null) { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + /// <summary> + /// This method is required for Windows Forms designer support. + /// Do not change the method contents inside the source code editor. The Forms designer might + /// not be able to load this method if it was changed manually. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.button1 = new System.Windows.Forms.Button(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.label1 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.fontDialog1 = new System.Windows.Forms.FontDialog(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.progressBar2 = new System.Windows.Forms.ProgressBar(); + this.trackBar1 = new System.Windows.Forms.TrackBar(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.monthCalendar1 = new System.Windows.Forms.MonthCalendar(); + this.checkedListBox1 = new System.Windows.Forms.CheckedListBox(); + this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.maskedTextBox1 = new System.Windows.Forms.MaskedTextBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); + this.tabControl1.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage"))); + this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.pictureBox1.Location = new System.Drawing.Point(13, 13); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(148, 156); + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(167, 13); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 1; + this.button1.Text = "颜色对话框"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.Button1Click); + // + // label1 + // + this.label1.AllowDrop = true; + this.label1.AutoEllipsis = true; + this.label1.Location = new System.Drawing.Point(168, 43); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(478, 62); + this.label1.TabIndex = 2; + this.label1.Text = "此程序用于测试是否能运行 .net framework 应用"; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(249, 13); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 3; + this.button2.Text = "消息对话框"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.Button2Click); + // + // button3 + // + this.button3.Location = new System.Drawing.Point(331, 13); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 23); + this.button3.TabIndex = 4; + this.button3.Text = "字体对话框"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.Button3Click); + // + // progressBar1 + // + this.progressBar1.Location = new System.Drawing.Point(168, 81); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(287, 23); + this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee; + this.progressBar1.TabIndex = 5; + this.progressBar1.Value = 50; + // + // progressBar2 + // + this.progressBar2.Location = new System.Drawing.Point(168, 111); + this.progressBar2.Name = "progressBar2"; + this.progressBar2.Size = new System.Drawing.Size(287, 23); + this.progressBar2.TabIndex = 6; + this.progressBar2.Value = 50; + // + // trackBar1 + // + this.trackBar1.Location = new System.Drawing.Point(168, 140); + this.trackBar1.Name = "trackBar1"; + this.trackBar1.Size = new System.Drawing.Size(287, 45); + this.trackBar1.TabIndex = 7; + // + // richTextBox1 + // + this.richTextBox1.Location = new System.Drawing.Point(12, 175); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(443, 96); + this.richTextBox1.TabIndex = 8; + this.richTextBox1.Text = ""; + // + // button4 + // + this.button4.Location = new System.Drawing.Point(413, 13); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(75, 23); + this.button4.TabIndex = 9; + this.button4.Text = "打开对话框"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.Button4Click); + // + // button5 + // + this.button5.Location = new System.Drawing.Point(495, 13); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(75, 23); + this.button5.TabIndex = 10; + this.button5.Text = "保存对话框"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.Button5Click); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // monthCalendar1 + // + this.monthCalendar1.Location = new System.Drawing.Point(467, 48); + this.monthCalendar1.Name = "monthCalendar1"; + this.monthCalendar1.TabIndex = 11; + // + // checkedListBox1 + // + this.checkedListBox1.FormattingEnabled = true; + this.checkedListBox1.Items.AddRange(new object[] { + "One", + "Two", + "Three"}); + this.checkedListBox1.Location = new System.Drawing.Point(467, 240); + this.checkedListBox1.Name = "checkedListBox1"; + this.checkedListBox1.Size = new System.Drawing.Size(120, 84); + this.checkedListBox1.TabIndex = 12; + // + // dateTimePicker1 + // + this.dateTimePicker1.Location = new System.Drawing.Point(12, 277); + this.dateTimePicker1.Name = "dateTimePicker1"; + this.dateTimePicker1.Size = new System.Drawing.Size(200, 21); + this.dateTimePicker1.TabIndex = 13; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(218, 277); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(200, 100); + this.tabControl1.TabIndex = 14; + // + // tabPage1 + // + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(192, 74); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "tabPage1"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(192, 74); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "tabPage2"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // maskedTextBox1 + // + this.maskedTextBox1.Location = new System.Drawing.Point(13, 304); + this.maskedTextBox1.Name = "maskedTextBox1"; + this.maskedTextBox1.Size = new System.Drawing.Size(100, 21); + this.maskedTextBox1.TabIndex = 15; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(700, 383); + this.Controls.Add(this.maskedTextBox1); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.dateTimePicker1); + this.Controls.Add(this.checkedListBox1); + this.Controls.Add(this.monthCalendar1); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.richTextBox1); + this.Controls.Add(this.trackBar1); + this.Controls.Add(this.progressBar2); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.label1); + this.Controls.Add(this.button1); + this.Controls.Add(this.pictureBox1); + this.Name = "MainForm"; + this.Text = "测试 .net framework"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); + this.tabControl1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + } + } + diff --git a/demo/CheckNet/CheckNet/MainForm.cs b/demo/CheckNet/CheckNet/MainForm.cs new file mode 100755 index 0000000..1a889eb --- /dev/null +++ b/demo/CheckNet/CheckNet/MainForm.cs @@ -0,0 +1,58 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 17:22 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace CheckNet +{ + /// <summary> + /// Description of MainForm. + /// </summary> + public partial class MainForm : Form + { + public MainForm() + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + + // + // TODO: Add constructor code after the InitializeComponent() call. + // + } + void Button1Click(object sender, EventArgs e) + { + colorDialog1.ShowDialog(); + pictureBox1.BackColor = colorDialog1.Color; + } + void Button2Click(object sender, EventArgs e) + { + MessageBox.Show("这是一个对话框", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("这是一个对话框", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question); + MessageBox.Show("这是一个对话框", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("这是一个对话框", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + void Button3Click(object sender, EventArgs e) + { + fontDialog1.ShowDialog(); + label1.Font = fontDialog1.Font; + } + void Button4Click(object sender, EventArgs e) + { + openFileDialog1.ShowDialog(); + } + void Button5Click(object sender, EventArgs e) + { + saveFileDialog1.ShowDialog(); + } + } +} diff --git a/demo/CheckNet/CheckNet/MainForm.resx b/demo/CheckNet/CheckNet/MainForm.resx new file mode 100755 index 0000000..9e080fd --- /dev/null +++ b/demo/CheckNet/CheckNet/MainForm.resx @@ -0,0 +1,525 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="pictureBox1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + 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 + rkJggg== +</value> + </data> + <metadata name="colorDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> + <metadata name="fontDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>143, 17</value> + </metadata> + <metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>263, 17</value> + </metadata> + <metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>407, 17</value> + </metadata> +</root> \ No newline at end of file diff --git a/demo/CheckNet/CheckNet/Program.cs b/demo/CheckNet/CheckNet/Program.cs new file mode 100755 index 0000000..1fe822e --- /dev/null +++ b/demo/CheckNet/CheckNet/Program.cs @@ -0,0 +1,31 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 17:22 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Windows.Forms; + +namespace CheckNet +{ + /// <summary> + /// Class with program entry point. + /// </summary> + internal sealed class Program + { + /// <summary> + /// Program entry point. + /// </summary> + [STAThread] + private static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + + } +} diff --git a/demo/CheckNet/CheckNet/Properties/AssemblyInfo.cs b/demo/CheckNet/CheckNet/Properties/AssemblyInfo.cs new file mode 100755 index 0000000..f6523f9 --- /dev/null +++ b/demo/CheckNet/CheckNet/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +#region Using directives + +using System; +using System.Reflection; +using System.Runtime.InteropServices; + +#endregion + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CheckNet")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CheckNet")] +[assembly: AssemblyCopyright("Copyright 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// This sets the default COM visibility of types in the assembly to invisible. +// If you need to expose a type to COM, use [ComVisible(true)] on that type. +[assembly: ComVisible(false)] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all the values or you can use the default the Revision and +// Build Numbers by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.*")] diff --git a/demo/CheckNet/CheckNet/app.config b/demo/CheckNet/CheckNet/app.config new file mode 100755 index 0000000..88f2be5 --- /dev/null +++ b/demo/CheckNet/CheckNet/app.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> +</configuration> \ No newline at end of file diff --git a/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe new file mode 100755 index 0000000..0be1c09 Binary files /dev/null and b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe differ diff --git a/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe.config b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe.config new file mode 100755 index 0000000..88f2be5 --- /dev/null +++ b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.exe.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> +</configuration> \ No newline at end of file diff --git a/demo/CheckNet/CheckNet/bin/Debug/CheckNet.pdb b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.pdb new file mode 100755 index 0000000..f4d2e69 Binary files /dev/null and b/demo/CheckNet/CheckNet/bin/Debug/CheckNet.pdb differ diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.MainForm.resources b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.MainForm.resources new file mode 100755 index 0000000..f8becc8 Binary files /dev/null and b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.MainForm.resources differ diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.FileListAbsolute.txt b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.FileListAbsolute.txt new file mode 100755 index 0000000..6c4509d --- /dev/null +++ b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.FileListAbsolute.txt @@ -0,0 +1,8 @@ +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\bin\Debug\CheckNet.exe.config +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\bin\Debug\CheckNet.exe +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\bin\Debug\CheckNet.pdb +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\obj\Debug\CheckNet.csprojResolveAssemblyReference.cache +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\obj\Debug\CheckNet.MainForm.resources +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\obj\Debug\CheckNet.csproj.GenerateResource.Cache +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\obj\Debug\CheckNet.exe +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNet\CheckNet\obj\Debug\CheckNet.pdb diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.GenerateResource.Cache b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.GenerateResource.Cache new file mode 100755 index 0000000..6e2aaaa Binary files /dev/null and b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csproj.GenerateResource.Cache differ diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csprojResolveAssemblyReference.cache b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csprojResolveAssemblyReference.cache new file mode 100755 index 0000000..caa092e Binary files /dev/null and b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.csprojResolveAssemblyReference.cache differ diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.exe b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.exe new file mode 100755 index 0000000..0be1c09 Binary files /dev/null and b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.exe differ diff --git a/demo/CheckNet/CheckNet/obj/Debug/CheckNet.pdb b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.pdb new file mode 100755 index 0000000..f4d2e69 Binary files /dev/null and b/demo/CheckNet/CheckNet/obj/Debug/CheckNet.pdb differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE.sln b/demo/CheckNetAndIE/CheckNetAndIE.sln new file mode 100755 index 0000000..4bb607d --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +# SharpDevelop 5.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CheckNetAndIE", "CheckNetAndIE\CheckNetAndIE.csproj", "{8181164E-829B-4785-AC8A-87D6C25AB078}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8181164E-829B-4785-AC8A-87D6C25AB078}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8181164E-829B-4785-AC8A-87D6C25AB078}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8181164E-829B-4785-AC8A-87D6C25AB078}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8181164E-829B-4785-AC8A-87D6C25AB078}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/demo/CheckNetAndIE/CheckNetAndIE/CheckNetAndIE.csproj b/demo/CheckNetAndIE/CheckNetAndIE/CheckNetAndIE.csproj new file mode 100755 index 0000000..87079a7 --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/CheckNetAndIE.csproj @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> + <PropertyGroup> + <ProjectGuid>{8181164E-829B-4785-AC8A-87D6C25AB078}</ProjectGuid> + <ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <OutputType>WinExe</OutputType> + <RootNamespace>CheckNetAndIE</RootNamespace> + <AssemblyName>CheckNetAndIE</AssemblyName> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <AppDesignerFolder>Properties</AppDesignerFolder> + </PropertyGroup> + <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' "> + <PlatformTarget>x86</PlatformTarget> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> + <OutputPath>bin\Debug\</OutputPath> + <DebugSymbols>True</DebugSymbols> + <DebugType>Full</DebugType> + <Optimize>False</Optimize> + <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow> + <DefineConstants>DEBUG;TRACE</DefineConstants> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> + <OutputPath>bin\Release\</OutputPath> + <DebugSymbols>False</DebugSymbols> + <DebugType>None</DebugType> + <Optimize>True</Optimize> + <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> + <DefineConstants>TRACE</DefineConstants> + </PropertyGroup> + <ItemGroup> + <Reference Include="Microsoft.CSharp"> + <RequiredTargetFramework>4.0</RequiredTargetFramework> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="MainForm.cs" /> + <Compile Include="MainForm.Designer.cs"> + <DependentUpon>MainForm.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <None Include="app.config" /> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="MainForm.resx"> + <DependentUpon>MainForm.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> +</Project> \ No newline at end of file diff --git a/demo/CheckNetAndIE/CheckNetAndIE/MainForm.Designer.cs b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.Designer.cs new file mode 100755 index 0000000..e639701 --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.Designer.cs @@ -0,0 +1,160 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 18:08 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +namespace CheckNetAndIE +{ + partial class MainForm + { + /// <summary> + /// Designer variable used to keep track of non-visual components. + /// </summary> + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.WebBrowser webBrowser1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.TextBox textBox1; + + /// <summary> + /// Disposes resources used by the form. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing) { + if (components != null) { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + /// <summary> + /// This method is required for Windows Forms designer support. + /// Do not change the method contents inside the source code editor. The Forms designer might + /// not be able to load this method if it was changed manually. + /// </summary> + private void InitializeComponent() + { + this.webBrowser1 = new System.Windows.Forms.WebBrowser(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // webBrowser1 + // + this.webBrowser1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.webBrowser1.Location = new System.Drawing.Point(12, 61); + this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); + this.webBrowser1.Name = "webBrowser1"; + this.webBrowser1.ScriptErrorsSuppressed = true; + this.webBrowser1.Size = new System.Drawing.Size(431, 258); + this.webBrowser1.TabIndex = 0; + this.webBrowser1.Url = new System.Uri("http://gfdgd-xi.github.io", System.UriKind.Absolute); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(12, 32); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 1; + this.button1.Text = "Url1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.Button1Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(95, 32); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 2; + this.button2.Text = "Url2"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.Button2Click); + // + // button3 + // + this.button3.Location = new System.Drawing.Point(177, 32); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 23); + this.button3.TabIndex = 3; + this.button3.Text = "Url3"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.Button3Click); + // + // button4 + // + this.button4.Location = new System.Drawing.Point(258, 32); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(75, 23); + this.button4.TabIndex = 4; + this.button4.Text = "Url4"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.Button4Click); + // + // button5 + // + this.button5.Location = new System.Drawing.Point(339, 32); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(75, 23); + this.button5.TabIndex = 5; + this.button5.Text = "Url5"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.Button5Click); + // + // button6 + // + this.button6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button6.Location = new System.Drawing.Point(368, 3); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(75, 23); + this.button6.TabIndex = 6; + this.button6.Text = "Go"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.Button6Click); + // + // textBox1 + // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBox1.Location = new System.Drawing.Point(12, 3); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(350, 21); + this.textBox1.TabIndex = 7; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(455, 331); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.button6); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.webBrowser1); + this.Name = "MainForm"; + this.Text = "测试 .net framework 和 Internet Explorer"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + } +} diff --git a/demo/CheckNetAndIE/CheckNetAndIE/MainForm.cs b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.cs new file mode 100755 index 0000000..6237b6c --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.cs @@ -0,0 +1,57 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 18:08 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace CheckNetAndIE +{ + /// <summary> + /// Description of MainForm. + /// </summary> + public partial class MainForm : Form + { + public MainForm() + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + + // + // TODO: Add constructor code after the InitializeComponent() call. + // + } + void Button1Click(object sender, EventArgs e) + { + webBrowser1.Navigate("https://gfdgd-xi.github.io"); + } + void Button2Click(object sender, EventArgs e) + { + webBrowser1.Navigate("https://bbs.deepin.org/user/239113"); + } + void Button3Click(object sender, EventArgs e) + { + webBrowser1.Navigate("https://spark-app.store/"); + } + void Button4Click(object sender, EventArgs e) + { + webBrowser1.Navigate("https://gitee.com/gfdgd-xi"); + } + void Button5Click(object sender, EventArgs e) + { + webBrowser1.Navigate("https://github.com/gfdgd-xi"); + } + void Button6Click(object sender, EventArgs e) + { + webBrowser1.Navigate(textBox1.Text); + } + } +} diff --git a/demo/CheckNetAndIE/CheckNetAndIE/MainForm.resx b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.resx new file mode 100755 index 0000000..29dcb1b --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/MainForm.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/demo/CheckNetAndIE/CheckNetAndIE/Program.cs b/demo/CheckNetAndIE/CheckNetAndIE/Program.cs new file mode 100755 index 0000000..b94125a --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/Program.cs @@ -0,0 +1,31 @@ +/* + * Created by SharpDevelop. + * User: gfdgd xi + * Date: 2022/11/5 + * Time: 18:08 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Windows.Forms; + +namespace CheckNetAndIE +{ + /// <summary> + /// Class with program entry point. + /// </summary> + internal sealed class Program + { + /// <summary> + /// Program entry point. + /// </summary> + [STAThread] + private static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + + } +} diff --git a/demo/CheckNetAndIE/CheckNetAndIE/Properties/AssemblyInfo.cs b/demo/CheckNetAndIE/CheckNetAndIE/Properties/AssemblyInfo.cs new file mode 100755 index 0000000..51bc1a6 --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/Properties/AssemblyInfo.cs @@ -0,0 +1,31 @@ +#region Using directives + +using System; +using System.Reflection; +using System.Runtime.InteropServices; + +#endregion + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CheckNetAndIE")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CheckNetAndIE")] +[assembly: AssemblyCopyright("Copyright 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// This sets the default COM visibility of types in the assembly to invisible. +// If you need to expose a type to COM, use [ComVisible(true)] on that type. +[assembly: ComVisible(false)] + +// The assembly version has following format : +// +// Major.Minor.Build.Revision +// +// You can specify all the values or you can use the default the Revision and +// Build Numbers by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.*")] diff --git a/demo/CheckNetAndIE/CheckNetAndIE/app.config b/demo/CheckNetAndIE/CheckNetAndIE/app.config new file mode 100755 index 0000000..88f2be5 --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/app.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> +</configuration> \ No newline at end of file diff --git a/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe new file mode 100755 index 0000000..22d0920 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe.config b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe.config new file mode 100755 index 0000000..88f2be5 --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.exe.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> + </startup> +</configuration> \ No newline at end of file diff --git a/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.pdb b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.pdb new file mode 100755 index 0000000..a5b6e17 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/bin/Debug/CheckNetAndIE.pdb differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.MainForm.resources b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.MainForm.resources new file mode 100755 index 0000000..6c05a97 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.MainForm.resources differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.FileListAbsolute.txt b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.FileListAbsolute.txt new file mode 100755 index 0000000..4b4bfdb --- /dev/null +++ b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.FileListAbsolute.txt @@ -0,0 +1,8 @@ +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\bin\Debug\CheckNetAndIE.exe.config +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\bin\Debug\CheckNetAndIE.exe +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\bin\Debug\CheckNetAndIE.pdb +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\obj\Debug\CheckNetAndIE.csprojResolveAssemblyReference.cache +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\obj\Debug\CheckNetAndIE.MainForm.resources +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\obj\Debug\CheckNetAndIE.csproj.GenerateResource.Cache +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\obj\Debug\CheckNetAndIE.exe +C:\Users\gfdgd xi\Documents\SharpDevelop Projects\CheckNetAndIE\CheckNetAndIE\obj\Debug\CheckNetAndIE.pdb diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.GenerateResource.Cache b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.GenerateResource.Cache new file mode 100755 index 0000000..7c67166 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csproj.GenerateResource.Cache differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csprojResolveAssemblyReference.cache b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csprojResolveAssemblyReference.cache new file mode 100755 index 0000000..caa092e Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.csprojResolveAssemblyReference.cache differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.exe b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.exe new file mode 100755 index 0000000..22d0920 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.exe differ diff --git a/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.pdb b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.pdb new file mode 100755 index 0000000..a5b6e17 Binary files /dev/null and b/demo/CheckNetAndIE/CheckNetAndIE/obj/Debug/CheckNetAndIE.pdb differ diff --git a/package-script.zip b/package-script.zip index ec6b06f..1f363e4 100755 Binary files a/package-script.zip and b/package-script.zip differ