Util.cs
上传用户:szltgg
上传日期:2019-05-16
资源大小:604k
文件大小:3k
源码类别:

Telnet服务器

开发平台:

C#

  1. /*
  2.  Copyright (c) 2005 Poderosa Project, All Rights Reserved.
  3.  This file is a part of the Granados SSH Client Library that is subject to
  4.  the license included in the distributed package.
  5.  You may not use this file except in compliance with the license.
  6.  $Id: Util.cs,v 1.2 2005/04/20 09:06:03 okajima Exp $
  7. */
  8. using System;
  9. using System.Text;
  10. using System.Runtime.InteropServices;
  11. using System.Windows.Forms;
  12. using System.Threading;
  13. namespace Poderosa.UI
  14. {
  15. internal class Win32 {
  16. [DllImport("gdi32.dll")]
  17. public static extern uint SetPixel(IntPtr hDC, int x, int y, uint colorref);
  18. [DllImport("gdi32.dll")]
  19. public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
  20. [DllImport("gdi32.dll")]
  21. public static extern int DeleteObject(IntPtr hObject);
  22. [DllImport("gdi32.dll")]
  23. public static extern int MoveToEx(IntPtr hDC, int x, int y, IntPtr prev_point); //慜偺埵抲偵偼嫽枴側偟
  24. public static int MoveToEx(IntPtr hDC, int x, int y) {
  25. return MoveToEx(hDC, x, y, IntPtr.Zero/*NULL*/);
  26. }
  27. [DllImport("gdi32.dll")]
  28. public static extern int LineTo(IntPtr hDC, int x, int y);
  29. [DllImport("gdi32.dll")]
  30. public static extern IntPtr CreatePen(int style, int width, uint color);
  31. }
  32. public class UILibUtil {
  33. public static Thread CreateThread(ThreadStart st) {
  34. Thread t = new Thread(st);
  35. //t.ApartmentState = ApartmentState.STA;
  36.             t.SetApartmentState(ApartmentState.STA);
  37. return t;
  38. }
  39. public static string KeyString(Keys key) {
  40. int ik = (int)key;
  41. if((int)Keys.D0<=ik && ik<=(int)Keys.D9)
  42. return new string((char)('0' + (ik-(int)Keys.D0)), 1);
  43. else {
  44. switch(key) {
  45. case Keys.None:
  46. return "";
  47. case Keys.Prior:
  48. return "PageUp";
  49. case Keys.Next:
  50. return "PageDown";
  51. //Oem傎偵傖傜傜偑偆偞偭偨偄
  52. case Keys.OemBackslash:
  53. return "Backslash";
  54. case Keys.OemCloseBrackets:
  55. return "CloseBrackets";
  56. case Keys.Oemcomma:
  57. return "Comma";
  58. case Keys.OemMinus:
  59. return "Minus";
  60. case Keys.OemOpenBrackets:
  61. return "OpenBrackets";
  62. case Keys.OemPeriod:
  63. return "Period";
  64. case Keys.OemPipe:
  65. return "Pipe";
  66. case Keys.Oemplus:
  67. return "Plus";
  68. case Keys.OemQuestion:
  69. return "Question";
  70. case Keys.OemQuotes:
  71. return "Quotes";
  72. case Keys.OemSemicolon:
  73. return "Semicolon";
  74. case Keys.Oemtilde:
  75. return "Tilde";
  76. default:
  77. return key.ToString();
  78. }
  79. }
  80. }
  81. public static string KeyString(Keys modifiers, Keys body, char delimiter) {
  82. StringBuilder b = new StringBuilder();
  83. if((modifiers & Keys.Control)!=Keys.None) {
  84. b.Append("Ctrl");
  85. }
  86. if((modifiers & Keys.Shift)!=Keys.None) {
  87. if(b.Length>0) b.Append(delimiter);
  88. b.Append("Shift");
  89. }
  90. if((modifiers & Keys.Alt)!=Keys.None) {
  91. if(b.Length>0) b.Append(delimiter);
  92. b.Append("Alt");
  93. }
  94. if(b.Length>0)
  95. b.Append(delimiter);
  96. b.Append(KeyString(body));
  97. return b.ToString();
  98. }
  99. }
  100. }