2025年7月10日 星期四

關於購買本工作室研發產品程式碼

程式碼:

對於本工作室產品研發的程式碼有興趣購買的,可以寫信詢洽!


專案開發:

歡迎各行各業,有需求須要軟體客製開發;本工作室都能承包


部分開發分包:

歡迎各公司或工作室,有難度性的或是須要分包出來的案件;本工作室也能承包


開發語言:

ASP.NET  / ASP Core 

VB .NET / C# .NET / Framework 


開發工具:

vs2022 community





2025年6月24日 星期二

TSC条码打印机C#例程(tsclib.dll调用) 【转】

 TSC条码打印机C#例程(tsclib.dll调用) 【转】

//----  program.cs


using System;

using System.Collections.Generic;

using System.Windows.Forms;


using System.Runtime.InteropServices;

public class TSCLIB_DLL

{

 [DllImport("TSCLIB.dll", EntryPoint = "about")]

    public static extern int about();


 [DllImport("TSCLIB.dll", EntryPoint = "openport")]

    public static extern int openport(string printername);


 [DllImport("TSCLIB.dll", EntryPoint = "barcode")]

    public static extern int barcode(string x, string y, string type,

                string height, string readable, string rotation,

                string narrow, string wide, string code);


 [DllImport("TSCLIB.dll", EntryPoint = "clearbuffer")]

    public static extern int clearbuffer();


 [DllImport("TSCLIB.dll", EntryPoint = "closeport")]

    public static extern int closeport();


 [DllImport("TSCLIB.dll", EntryPoint = "downloadpcx")]

    public static extern int downloadpcx(string filename, string image_name);


 [DllImport("TSCLIB.dll", EntryPoint = "formfeed")]

    public static extern int formfeed();


 [DllImport("TSCLIB.dll", EntryPoint = "nobackfeed")]

    public static extern int nobackfeed();


 [DllImport("TSCLIB.dll", EntryPoint = "printerfont")]

    public static extern int printerfont(string x, string y, string fonttype,

                    string rotation, string xmul, string ymul,

                    string text);


 [DllImport("TSCLIB.dll", EntryPoint = "printlabel")]

    public static extern int printlabel(string set, string copy);


 [DllImport("TSCLIB.dll", EntryPoint = "sendcommand")]

    public static extern int sendcommand(string printercommand);


 [DllImport("TSCLIB.dll", EntryPoint = "setup")]

    public static extern int setup(string width, string height,

              string speed, string density,

              string sensor, string vertical,

              string offset);


 [DllImport("TSCLIB.dll", EntryPoint = "windowsfont")]

    public static extern int windowsfont(int x, int y, int fontheight,

     int rotation,  int fontstyle, int fontunderline,

                    string szFaceName, string content);

  

}



namespace TSCLIB_DLL_IN_C_Sharp

{

    static class Program

    {

        /// <summary>

        /// 應用程式的主要進入點。

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());

        }

    }

}


 


 


//----Form1.cs


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;


namespace TSCLIB_DLL_IN_C_Sharp

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            //TSCLIB_DLL.about();                                                                //Show the DLL version

            TSCLIB_DLL.openport("TSC TTP-344M Plus");                                          //Open specified printer driver

            TSCLIB_DLL.setup("100", "63.5", "4", "8", "0", "0", "0");                          //Setup the media size and sensor type info

            TSCLIB_DLL.clearbuffer();                                                          //Clear image buffer

            TSCLIB_DLL.barcode("100", "100", "128", "100", "1", "0", "2", "2", "Barcode Test"); //Drawing barcode

            TSCLIB_DLL.printerfont("100", "250", "3", "0", "1", "1", "Print Font Test");       //Drawing printer font

            TSCLIB_DLL.windowsfont(100, 300, 24, 0, 0, 0, "ARIAL", "Windows Arial Font Test"); //Draw windows font

            TSCLIB_DLL.downloadpcx("UL.PCX", "UL.PCX");                                        //Download PCX file into printer

            TSCLIB_DLL.sendcommand("PUTPCX 100,400,"UL.PCX"");                               //Drawing PCX graphic

            TSCLIB_DLL.printlabel("1", "1");                                                   //Print labels

            TSCLIB_DLL.closeport();                                                            //Close specified printer driver

           

        }

    }

}


 


 


//------ 另例


  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void windowsfont(int a, int b, int c,int d,int e ,int f, string g ,string h);

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void openport(string printername);

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void closeport();

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void sendcommand(string command);

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void setup(string width,string height,string speed,string density,string sensor,string vertical,string offset);

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void clearbuffer();

  [System.Runtime.InteropServices.DllImport("tsclib.dll")]

  private static extern void printlabel(string Set,string Copy);



  private void button1_Click(object sender, System.EventArgs e)

  {

   openport("TSC TTP-343");

   setup("100","65","3","10","0","3","0");

   clearbuffer();

   windowsfont(50,30,70,0,0,0,"黑体","索书号:");

   printlabel("1", "1");

   closeport();

  }


 


 


 


#region 调用TSC打印机打印条码

        /// <summary>

        /// 调用TSC打印机打印条码

        /// </summary>

        /// <param name="title">打印的标题</param>

        /// <param name="barCode">打印的条码编号</param>

        public static void TSC(string title, string barCode)

        {

            // 打开 打印机 端口.

            TSCLIB_DLL.openport(p_port);

            // 设置标签 宽度、高度 等信息.

            // 宽 94mm  高 25mm

            // 速度为4

            // 字体浓度为8

            // 使用垂直間距感測器(gap sensor)

            // 两个标签之间的  间距为 3.5mm

            TSCLIB_DLL.setup("94", "25", "4", "8", "0", "3.5", "0");

            // 清除缓冲信息

            TSCLIB_DLL.clearbuffer();

            // 发送 TSPL 指令.

            // 设置 打印的方向.

            TSCLIB_DLL.sendcommand("DIRECTION 1");

            // 打印文本信息.

            // 在 (176, 16) 的坐标上

            // 字体高度为34

            // 旋转的角度为 0 度

            // 2 表示 粗体.

            // 文字没有下划线.

            // 字体为 黑体.

            // 打印的内容为:title

            TSCLIB_DLL.windowsfont(176, 16, 34, 0, 2, 0, "宋体", title);

            // 打印条码.

            // 在 (176, 66) 的坐标上

            // 以 Code39 的条码方式

            // 条码高度 130

            // 打印条码的同时,还打印条码的文本信息.

            // 旋转的角度为 0 度

            // 条码 宽 窄 比例因子为 7:12

            // 条码内容为:barCode

            TSCLIB_DLL.barcode("176", "66", "39", "130", "1", "0", "7", "12", barCode);


 


#region 请求sendcommand指令,打印二维码

           //功能:繪製QRCODE二維條碼

           //語法:

           //QRCODE X, Y, ECC Level, cell width, mode, rotation, [model, mask,]"Data string”

           //參數說明

           //X QRCODE條碼左上角X座標

           //Y QRCODE條碼左上角Y座標

           //ECC level 錯誤糾正能力等級

           //L 7%

           //M 15%

           //Q 25%

           //H 30%

           //cell width    1~10

           //mode  自動生成編碼/手動生成編碼

           //A Auto

           //M Manual

           //rotation  順時針旋轉角度

           //0 不旋轉

           //90    順時針旋轉90度

           //180   順時針旋轉180度

           //270   順時針旋轉270度

           //model 條碼生成樣式

           //1 (預設), 原始版本

           //2 擴大版本

           //mask  範圍:0~8,預設7

           //Data string   條碼資料內容

           #endregion

           string command = "QRCODE 176,8,Q,8,A,0,M2,S7,\"" + barCode + "\"";

           TSCLIB_DLL.sendcommand(command);


            // 打印.

            TSCLIB_DLL.printlabel("1", "1");

            // 关闭 打印机 端口

            TSCLIB_DLL.closeport();

        }

#endregion


2025年5月14日 星期三

TRY CATCH

 在較早的 SQL 版本,要檢測 TSQL 是否有發生執行錯誤,都只能透過判斷 @@ERROR 全域變數,直到 SQL2005 才新增了 TRY...CATCH 這個結構化的例外處理功能。 它採用和程式語言中的 TRY...CATCH 類似的語法,在 TRY 區塊內放的是一般陳述式,CATCH 區塊內放的是錯誤處理的陳述式。


使用 TRY...CATCH 結構,若執行的 TSQL 發生了錯誤,錯誤訊息將不會傳到呼叫端,除非透過 RAISERROR 再送出錯誤訊息。


取得錯誤訊息的函式:

當使用 TRY...CATCH 時,你可以在 CATCH 區塊中使用以下函式以取得與錯誤訊息相關的資訊:


ERROR_NUMBER :發生錯誤的錯誤代碼

ERROR_MESSAGE :發生錯誤的錯誤訊息

ERROR_SEVERITY :發生錯誤的錯誤層級

ERROR_STATE :發生錯誤的錯誤狀態

ERROR_PROCEDURE :發生錯誤的程序名稱

ERROR_LINE :發生錯誤的行數

BEGIN TRY

INSERT Emp(EmpName, DepNo) Values (@EmpName, 1) 

INSERT Emp(EmpName, DepNo) Values (@EmpName, 1) 

END TRY

BEGIN CATCH

    PRINT '錯誤代碼:' + cast(ERROR_NUMBER() as varchar(5)) + char(13) +

  '錯誤訊息:' + ERROR_MESSAGE()

    RAISERROR('資料寫入錯誤',16,10)

END CATCH; 

以上函式,若不是在 CATCH 區塊中使用,都將回傳 NULL 。


2025年5月6日 星期二

DriveInfo.GetDrives 取所有磁碟

 參考引用:DriveInfo.GetDrives Method

---


Imports System.IO

Imports System


Class Test

Public Shared Sub Main()

Dim allDrives As DriveInfo() = DriveInfo.GetDrives()


For Each d As DriveInfo In allDrives

Console.WriteLine("Drive {0}", d.Name)

Console.WriteLine("  Drive type: {0}", d.DriveType)

If d.IsReady Then

Console.WriteLine("  Volume label: {0}", d.VolumeLabel)

Console.WriteLine("  File system: {0}", d.DriveFormat)

Console.WriteLine("  Available space to current user:{0, 15} bytes", d.AvailableFreeSpace)


Console.WriteLine("  Total available space:          {0, 15} bytes", d.TotalFreeSpace)


Console.WriteLine("  Total size of drive:            {0, 15} bytes ", d.TotalSize)

End If

Next

End Sub

End Class


2025年3月3日 星期一

2025年2月17日 星期一

WebClient Download json

 參考引用:How To Display JSON Data Into GridView

----

using Newtonsoft.Json;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;


namespace _5M_Solution

{

  public partial class Harqat_Maqbozat_Grid : System.Web.UI.Page

  {

    protected void Page_Load(object sender, EventArgs e)

    {

      if (!this.IsPostBack)

      {

        this.GetJsonData();

      }

    }


    public void GetJsonData()

    {

      ServicePointManager.Expect100Continue = true;

      ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

      string json = (new WebClient()).DownloadString("https://receipt-voucher-default-rtdb.firebaseio.com/receipts.json");

      Dictionary<string, object> values = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);

      List<Receipt> receipts = new List<Receipt>();

      foreach (var entry in values)

      {

        receipts.Add(JsonConvert.DeserializeObject<Receipt>(entry.Value.ToString()));

      }

      gvDetails.DataSource = receipts;

      gvDetails.DataBind();

    }


    public class Receipt

    {

      public string amount { get; set; }

      public string branch_num { get; set; }

      public string machineID { get; set; }

      public string shift { get; set; }

      public string userID { get; set; }

      public string voucher_date { get; set; }

      public string voucher_number { get; set; }

    }


    public void ExportExcel()

    {

      try

      {

        Response.Clear();

        Response.Buffer = true;

        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "5M_MaqbozatDetails.xls"));

        Response.ContentType = "application/ms-excel";

        Response.Charset = "";

        this.EnableViewState = false;

        System.IO.StringWriter writer = new System.IO.StringWriter();

        System.Web.UI.HtmlTextWriter html = new System.Web.UI.HtmlTextWriter(writer);

        GetJsonData();

        //dl_JsonDetails.DataBind();

        gvDetails.RenderControl(html);

        Response.Write(writer.ToString());

        Response.Flush();

        Response.End();

      }

      catch (Exception ex)

      {

      }

    }


    protected void btn_ExportExcel_Click(object sender, EventArgs e)

    {

      ExportExcel();

    }


    protected void gvDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)

    {

      gvDetails.PageIndex = e.NewPageIndex;

      this.GetJsonData();

    }


    protected void dd_SearchByBranchNo_SelectedIndexChanged(object sender, EventArgs e)

    {


    }

  }

}


How To Display JSON Data Into GridView

 參考引用:How To Display JSON Data Into GridView

---

"-MuPh0RFdkXA6Jw5wYxp": {

        "amount": "10000.0",

        "branch_num": "001",

        "machineID": "VB12213C20156",

        "shift": 2,

        "userID": "7",

        "voucher_date": "2022-01-27T11:42:56",

        "voucher_number": "156202200017"

    }

public DataTable jsonDataDiplay()  

{  

    StreamReader sr = new StreamReader(Server.MapPath("TrainServiceAlerts.json"));  

    string json = sr.ReadToEnd();  

    dynamic table = JsonConvert.DeserializeObject(json);  

    DataTable newTable = new DataTable();  

    newTable.Columns.Add("amount", typeof(string));  

    newTable.Columns.Add("branch_num", typeof(string));  

    newTable.Columns.Add("machineID", typeof(string));  

    newTable.Columns.Add("shift", typeof(string));  

    newTable.Columns.Add("userID", typeof(string));  

    newTable.Columns.Add("voucher_date", typeof(string));  

    newTable.Columns.Add("voucher_number", typeof(string));  

  

    foreach (var row in table.value.data)  

    {  

        newTable.Rows.Add(row.amount, row.branch_num, row.machineID, row.shift,row.userID,row.voucher_date,row.voucher_number);  

    }  

    return newTable;  

}  

GridView.DataSource = newTable ;  

GridView.DataBind();  


2025年2月15日 星期六

使用 HttpClient 類別提出 HTTP 要求

 請參考來源:使用 HttpClient 類別提出 HTTP 要求

---

HttpClient

提出 HTTP 要求

若要提出 HTTP 要求,您可以呼叫下列任何 API:


HTTP 方法 API

GET HttpClient.GetAsync

GET HttpClient.GetByteArrayAsync

GET HttpClient.GetStreamAsync

GET HttpClient.GetStringAsync

POST HttpClient.PostAsync

PUT HttpClient.PutAsync

PATCH HttpClient.PatchAsync

DELETE HttpClient.DeleteAsync

HttpClient.SendAsync  USER SPECIFIED 要求表示 SendAsync 方法接受任何有效的 HttpMethod


2025年2月10日 星期一

清除 mstsc 记录

 Win10怎么删除远程桌面连接记录?(3种方法)

---

方法2. 通过命令提示符删除记录

在方法1中我们可以手动将远程桌面连接历史删除,如果觉得太麻烦或太费时间,我们也可以通过命令提示符删除远程桌面连接记录。

步骤1. 按“Win + R”键,然后输入“CMD”打开命令提示符。

步骤2. 然后依次输入以下命令,并在每个命令输入完成按下回车键。

reg delete “HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default” /va /f

reg delete “HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers” /f

reg add “HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers”

del /ah %homepath%\documents\default.rdp


TcpClient port

 Imports System.Diagnostics

Imports System.Net.Sockets

Imports System.Threading


Public Class Form4

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim ip = "192.168.1.10" 'SQL Server主機的IP位址。

        Dim port = 1433 'SQL Server的port預設是1433。

        Dim sw As Stopwatch = New Stopwatch()

        sw.Start()

        Dim isConnection = TestConn(ip, port)

        sw.[Stop]()

        Dim message = String.Empty

        If isConnection Then

            message = "連線成功。 經過{0}秒。"

        Else

            message = "連線失敗了! 經過{0}秒!"

        End If

        Dim t = sw.ElapsedMilliseconds / 1000.0

        MessageBox.Show(String.Format(message, t))

    End Sub


    Public Function TestConn(ip As String, port As Integer) As Boolean

        Try

            Using tc As TcpClient = New TcpClient()

                Dim result As IAsyncResult = tc.BeginConnect(ip, port, Nothing, Nothing)

                Dim start = Date.Now

                Do

                    SpinWait.SpinUntil(Function() False, 100)

                    If result.IsCompleted Then Exit Do

                Loop While Date.Now.Subtract(start).TotalSeconds < 0.3

                If result.IsCompleted Then

                    tc.EndConnect(result)

                    Return True

                End If

                tc.Close()

                If Not result.IsCompleted Then

                    Return False

                End If

            End Using

        Catch ex As Exception

            Console.WriteLine(ex.Message)

            Throw

        End Try

        Return False

    End Function


End Class


iis localhost 建立 SSL (https) 連線

 參考:How can I create a self-signed cert for localhost?

參考:Enabling SSL on localhost IIS

----



2025年2月7日 星期五

安裝WordPress到Windows

 6步輕鬆安裝WordPress到Windows和Mac電腦上

https://loyseo.com/zh-hant/tutorial/wordpress/install-wordpress/pc-local/



zh-tw:安裝WordPress

https://codex.wordpress.org/zh-tw:%E5%AE%89%E8%A3%9DWordPress



********

如何下載安裝 WordPress 站台,設定資料庫連線,建立全新部落格 (適用 IIS 架站)

https://ithelp.ithome.com.tw/m/articles/10260063

Windows Server IIS 如何安裝 PHP 網頁伺服器

https://blog.hungwin.com.tw/windows-server-iis-php-install/

********


wordpress自己架設網站,快速架站wordpress教學

https://www.koc.com.tw/archives/165785




WordPress教學-20分鐘新手網站架設流程

https://jclassroom.net/20-minutes-create-wordpress-website/


WordPress 後台教學:給新手的操作教學(全指南)

https://frankknow.com/wordpress-build-teach/


2025年2月4日 星期二

MSSQL stored procedure TRY...CATCH

參考來源:TRY...CATCH (Transact-SQL)


 BEGIN TRY

SELECT  aa/0 FROM DEMO

END TRY


BEGIN CATCH

    SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() AS ErrorMessage;

END CATCH