关于 SENDKEYS 的代码

sendkeys 的用法(MSDN):

SendKeys 语句

       

将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。

语法

SendKeys string[, wait]

SendKeys 语句的语法具有以下几个命名参数:

部分描述
string必需的。字符串表达式,指定要发送的按键消息。
Wait可选的。指定等待方式的 BooleandefBooleanDataType@veendf98.chm 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。

 

说明

每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 "A" 作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 "ABC" 作为 string

SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。方括号 ([ ]) 对 SendKeys 来说并不具有特殊意义,但必须将它们放在大括号中。在其它应用程序中,方括号有特殊意义,在出现动态数据交换 (DDE) 的时候,它可能具有重要意义。为了指定大括号字符,请使用 {{} 及 {}}。

为了在按下按键时指定那些不显示的字符,例如 ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码:

按键代码
BACKSPACE{BACKSPACE}, {BS}, 或 {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL or DELETE{DELETE} 或 {DEL}
DOWN ARROW{DOWN}
END{END}
ENTER {ENTER}~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS or INSERT{INSERT} 或 {INS}
LEFT ARROW{LEFT}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}
F11{F11}
F12{F12}
F13{F13}
F14{F14}
F15{F15}
F16{F16}

 

为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:

按键代码
SHIFT+
CTRL ^
ALT%

 

为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 "+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"。

为了指定重复键,使用 {key number} 的形式。必须在 keynumber 之间放置一个空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。

注意 不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows or Macintosh中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。

我们如果想发送键命令,可以用 SENDKEYS ,但要发送 WINDOWS 微标键怎么做?(MSDN中没有给出WINDOWS键 的键码)
下面是可以执行的代码:

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_LWIN = &H5B 'Left Windows key (Microsoft Natural keyboard)
Private Const VK_RWIN = &H5C 'Right Windows key (Natural keyboard)
Private Sub Command1_Click() 'left windows
keybd_event VK_LWIN, 0&H1, 0
keybd_event VK_LWIN, 
0&H2, 0
End Sub
Private Sub Command2_Click() 'right windows
keybd_event VK_RWIN, 0&H1, 0
keybd_event VK_RWIN, 
0&H2, 0
End Sub

 

详细的解释可参看SENDKEYS 类(http://www.vbaccelerator.com/home/VB/Tips/SendKeys_using_the_API/SendKeys_Demonstration_zip_cSendKeys_cls.asp):

vbAccelerator - Contents of code file: cSendKeys.clsVERSION 1.0 CLASS
BEGIN
  MultiUse 
= -1  'True
END
Attribute VB_Name 
= "cSendKeys"
Attribute VB_GlobalNameSpace 
= False
Attribute VB_Creatable 
= True
Attribute VB_PredeclaredId 
= False
Attribute VB_Exposed 
= False
Option Explicit

Public Enum MoreKeyConstants
   VK_LWIN 
= &H5B 'Left Windows key (Microsoft Natural keyboard)
   VK_RWIN = &H5C 'Right Windows key (Natural keyboard)
   VK_APPS = &H5D 'Applications key (Natural keyboard)
   VK_SLEEP = &H5F 'Computer Sleep key
   
   VK_RMENU 
= &HA5 ' Right MENU key
   VK_BROWSER_BACK = &HA6 'Windows 2000/XP: Browser Back key
   VK_BROWSER_FORWARD = &HA7 'Windows 2000/XP: Browser Forward key
   VK_BROWSER_REFRESH = &HA8 'Windows 2000/XP: Browser Refresh key
   VK_BROWSER_STOP = &HA9 'Windows 2000/XP: Browser Stop key
   VK_BROWSER_SEARCH = &HAA 'Windows 2000/XP: Browser Search key
   VK_BROWSER_FAVORITES = &HAB 'Windows 2000/XP: Browser Favorites key
   VK_BROWSER_HOME = &HAC 'Windows 2000/XP: Browser Start and Home key
   VK_VOLUME_MUTE = &HAD 'Windows 2000/XP: Volume Mute key
   VK_VOLUME_DOWN = &HAE  'Windows 2000/XP: Volume Down key
   VK_VOLUME_UP = &HAF  'Windows 2000/XP: Volume Up key
   VK_MEDIA_NEXT_TRACK = &HB0  'Windows 2000/XP: Next Track key
   VK_MEDIA_PREV_TRACK = &HB1  'Windows 2000/XP: Previous Track key
   VK_MEDIA_STOP = &HB2  'Windows 2000/XP: Stop Media key
   VK_MEDIA_PLAY_PAUSE = &HB3  'Windows 2000/XP: Play/Pause Media key
   VK_LAUNCH_MAIL = &HB4  'Windows 2000/XP: Start Mail key
   VK_LAUNCH_MEDIA_SELECT = &HB5  'Windows 2000/XP: Select Media key
   VK_LAUNCH_APP1 = &HB6  'Windows 2000/XP: Start Application 1 key
   VK_LAUNCH_APP2 = &HB7  'Windows 2000/XP: Start Application 2 key
   VK_OEM_1 = &HBA 'Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the ';:' key
 
   VK_OEM_PLUS 
= &HBB 'Windows 2000/XP: For any country/region, the '+' key
   VK_OEM_COMMA = &HBC 'Windows 2000/XP: For any country/region, the ',' key
   VK_OEM_MINUS = &HBD 'Windows 2000/XP: For any country/region, the '-' key
   VK_OEM_PERIOD = &HBE 'Windows 2000/XP: For any country/region, the '.' key
   VK_OEM_2 = &HBF 'Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the '/?' key
   VK_OEM_3 = &HC0 'Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the '`~' key

'  C1D7 Reserved
'
  D8DA Unassigned
   VK_OEM_4 = &HDB 'Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the '[{' key
   VK_OEM_5 = &HDC 'Used for miscellaneous characters; it can vary by keyboard.
    Windows 2000/XP: For the US standard keyboard, the '|' key
   VK_OEM_6 = &HDD 'Used for miscellaneous characters; it can vary by keyboard
    Windows 2000/XP: For the US standard keyboard, the ']}' key
   VK_OEM_7 = &HDE ' Used for miscellaneous characters; it can vary by
    keyboard. Windows 2000/XP: For the US standard keyboard, the
    
'single-quote/double-quote' key
   VK_OEM_8 = &HDF 'Used for miscellaneous characters; it can vary by keyboard.
      E0 Reserved
'- E1 OEM specific
   VK_OEM_102 = &HE2 'Windows 2000/XP: Either the angle bracket key or the
    backslash key on the RT 102-key keyboard
' E3E4 OEM specific
   VK_PROCESSKEY = &HE5 'Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME
    PROCESS key
' E6 OEM specific
   VK_PACKET = &HE7 'Windows 2000/XP: Used to pass Unicode characters as if
    they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual
    Key value used 
for non-keyboard input methods. For more information, see
    Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, 
and WM_KEYUP
'  E8 Unassigned
'
 E9F5 OEM specific
   VK_ATTN = &HF6 'Attn key
   VK_CRSEL = &HF7 'CrSel key
   VK_EXSEL = &HF8 'ExSel key
   VK_EREOF = &HF9 'Erase EOF key
   VK_PLAY = &HFA 'Play key
   VK_ZOOM = &HFB 'Zoom key
   VK_NONAME = &HFC 'Reserved for future use
   VK_PA1 = &HFD 'PA1 key
   VK_OEM_CLEAR = &HFE 'Clear key
End Enum

Private m_colKeyMap As New Collection

Private Declare Sub keybd_event Lib "user32" ( _
   ByVal bVk 
As Byte, ByVal bScan As Byte, _
   ByVal dwFlags 
As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2

Private Declare Function GetVersion Lib "kernel32" () As Long
Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" ( _
   ByVal cChar 
As ByteAs Integer
Private Declare Function VkKeyScanW Lib "user32" ( _
   ByVal cChar 
As IntegerAs Integer

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    lpvDest 
As Any, lpvSource As Any, ByVal cbCopy As Long)

Private Function nextChar(ByRef sString As String, ByVal iPos As Long, Optional
 ByVal lLen 
As Long = 0As String
   
If (lLen = 0Then lLen = Len(sString)
   
If (iPos + 1 <= lLen) Then
      nextChar 
= Mid$(sString, iPos + 11)
   
End If
End Function

Public Sub SendKeys(ByVal sKeys As String, Optional ByVal Wait As Boolean)

   
' The plus sign (+), caret (^), percent sign (%),
   ' tilde (~), and parentheses ( ) have special
   ' meanings to SendKeys
   ' Brackets ([ ]) have no special meaning to SendKeys,
   ' but you must enclose them in braces.
   ' To specify brace characters, use {{} and {}}.
   ' Repeating keys: {LEFT 42} do left 42 times.
   
   
' + = Shift
   ' ^ = Ctrl
   ' % = Alt
   ' ~ = enter
   ' ( = start sub expression. +(EC) = Shift then E then C
      
On Error GoTo errorHandler

   
Dim sMsg As String
   
Dim lErr As Long
   
Dim iPos As Long
   
Dim iNextPos As Long
   
Dim iLen As Long
   
Dim sChar As String
   
Dim colBrace As New Collection
   
Dim sContent As String
   
Dim sKey As String
   
Dim sCount As String
   
Dim lCount As Long

   iPos 
= 1
   iLen 
= Len(sKeys)
   
Do While iPos <= iLen
   
      sChar 
= Mid$(sKeys, iPos, 1)
      
Select Case sChar
      
Case "+""~""%"
         
If nextChar(sKeys, iPos, iLen) = "(" Then
            
' Add to brace stack:
            colBrace.Add sChar
            
' send key down
            Select Case sChar
            
Case "+"
               KeyDown vbKeyShift
            
Case "~"
               KeyDown vbKeyControl
            
Case "%"
               KeyDown vbKeyMenu
            
End Select
            iPos 
= iPos + 2
         
Else
            
' Key press the key (probably not what you wanted)
            Select Case sChar
            
Case "+"
               KeyDown vbKeyShift
               KeyUp vbKeyShift
            
Case "~"
               KeyDown vbKeyControl
               KeyUp vbKeyControl
            
Case "%"
               KeyDown vbKeyMenu
               KeyUp vbKeyMenu
            
End Select
            iPos 
= iPos + 1
         
End If
      
      
Case "~"
         
' Enter key:
         KeyDown vbKeyReturn
         KeyUp vbKeyReturn
         iPos 
= iPos + 1
         
      
Case ")"
         
If (colBrace.Count > 0Then
            sChar 
= colBrace(colBrace.Count)
            
' send key up
            Select Case sChar
            
Case "+"
               KeyUp vbKeyShift
            
Case "~"
               KeyUp vbKeyControl
            
Case "%"
               KeyUp vbKeyMenu
            
End Select
            colBrace.Remove colBrace.Count
            iPos 
= iPos + 1
         
Else
            
' Invalid sendkeys command:
            sMsg = "Invalid sendkeys command: unmatched ) at position " & iPos
            
GoTo errorHandler
         
End If
      
      
Case "{"
         
' special key
         If (iPos + 2 > iLen) Then
            sMsg 
= "Invalid sendkeys command; opening { without content or
             closing } at position " & iPos
            GoTo errorHandler
         
Else
            iNextPos 
= InStr(iPos + 2, sKeys, "}")
            
If (iNextPos = 0Then
               sMsg 
= "Invalid sendkeys command; opening { without closing } at
                position " & iPos
               GoTo errorHandler
            
Else
               sContent 
= Mid$(sKeys, iPos + 1, iNextPos - iPos - 1)
               iPos 
= iNextPos + 1
               
' is this a key/presses pair?
               iNextPos = InStr(sContent, " ")
               
If (iNextPos > 0Then
                  sKey 
= Left$(sContent, iNextPos - 1)
                  sCount 
= Mid$(sContent, iNextPos + 1)
                  
If Not (IsNumeric(sCount)) Then
                     sMsg 
= "Invalid sendkeys command; key repetitions '" &
                      sCount 
& "' is invalid near position " & iPos
                     lCount 
= CLng(sCount)
                  
End If
               
Else
                  sKey 
= sContent
                  lCount 
= 1
               
End If
               KeyPress sKey, lCount
               
            
End If
         
End If
         
      
Case Else
         
' send the key as is
         KeyPress sChar, 1
         iPos 
= iPos + 1
         
      
End Select
   
   
Loop
   
   
If (colBrace.Count > 0Then
      sMsg 
= "Invalid sendkeys command: more open brackets than close brackets."
      
GoTo errorHandler
   
End If
   
   
Exit Sub
   
errorHandler:
   
If Len(sMsg) = 0 Then
      sMsg 
= Err.Description
      lErr 
= Err.Number
   
End If
   
   
' If we don't clear up the shift/control/alt keys,
   ' then you might find other apps on the system are hard to
   ' use.
   ' Make sure you have Break on Unhandled Errors switched
   ' on.
   Do While colBrace.Count > 0
      sChar 
= colBrace(colBrace.Count)
      
' send key up
      Select Case sChar
      
Case "+"
         KeyUp vbKeyShift
      
Case "~"
         KeyUp vbKeyControl
      
Case "%"
         KeyUp vbKeyMenu
      
End Select
      colBrace.Remove colBrace.Count
   
Loop
   
   
On Error GoTo 0
   Err.Raise lErr, App.EXEName 
& ".cSendKeys", sMsg
   
   
Exit Sub

End Sub

Public Sub KeyPress(ByVal sKey As String, Optional ByVal lCount = 1)
Dim vKey As KeyCodeConstants
Dim l As Long

   
On Error Resume Next
   vKey 
= m_colKeyMap(sKey)
   
On Error GoTo 0
   
   
If (vKey = 0Then
      
' translate string into v key code
      vKey = KeyCode(sKey)
   
End If
   
   
If (vKey <> 0Then
      
For l = 1 To lCount
         KeyDown vKey
         KeyUp vKey
      
Next l
   
Else
      Err.Raise 
9, , "Key " & sKey & " could not be interpreted."
   
End If
   
End Sub

Public Sub KeyDown(ByVal vKey As KeyCodeConstants)
   keybd_event vKey, 
0, KEYEVENTF_EXTENDEDKEY, 0
End Sub

Public Sub KeyUp(ByVal vKey As KeyCodeConstants)
   keybd_event vKey, 
0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub

Public Function KeyCode(ByVal sChar As StringAs KeyCodeConstants
Dim bNt As Boolean
Dim iKeyCode As Integer
Dim b() As Byte
Dim iKey As Integer
Dim vKey As KeyCodeConstants
Dim iShift As ShiftConstants

   
' Determine if we have Unicode support or not:
   bNt = ((GetVersion() And &H80000000) = 0)
   
   
' Get the keyboard scan code for the character:
   If (bNt) Then
      b 
= sChar
      CopyMemory iKey, b(
0), 2
      iKeyCode 
= VkKeyScanW(iKey)
   
Else
      b 
= StrConv(sChar, vbFromUnicode)
      iKeyCode 
= VkKeyScan(b(0))
   
End If
   
   KeyCode 
= (iKeyCode And &HFF&)

End Function


Private Sub Class_Initialize()

   m_colKeyMap.Add vbKeyBack, 
"BACKSPACE"
   m_colKeyMap.Add vbKeyBack, 
"BS"
   m_colKeyMap.Add vbKeyBack, 
"BKSP"
   m_colKeyMap.Add vbKeyPause, 
"BREAK"
   m_colKeyMap.Add vbKeyCapital, 
"CAPSLOCK"
   m_colKeyMap.Add vbKeyDelete, 
"DELETE"
   m_colKeyMap.Add vbKeyDelete, 
"DEL"
   m_colKeyMap.Add vbKeyDown, 
"DOWN"
   m_colKeyMap.Add vbKeyEnd, 
"END"
   m_colKeyMap.Add vbKeyReturn, 
"ENTER"
   m_colKeyMap.Add vbKeyReturn, 
"~"
   m_colKeyMap.Add vbKeyEscape, 
"ESC"
   m_colKeyMap.Add vbKeyHelp, 
"HELP"
   m_colKeyMap.Add vbKeyHome, 
"HOME"
   m_colKeyMap.Add vbKeyInsert, 
"INS"
   m_colKeyMap.Add vbKeyInsert, 
"INSERT"
   m_colKeyMap.Add vbKeyLeft, 
"LEFT"
   m_colKeyMap.Add vbKeyNumlock, 
"NUMLOCK"
   m_colKeyMap.Add vbKeyPageDown, 
"PGDN"
   m_colKeyMap.Add vbKeyPageUp, 
"PGUP"
   m_colKeyMap.Add vbKeyPrint, 
"PRTSC"
   m_colKeyMap.Add vbKeyRight, 
"RIGHT"
   m_colKeyMap.Add vbKeyScrollLock, 
"SCROLLLOCK"
   m_colKeyMap.Add vbKeyTab, 
"TAB"
   m_colKeyMap.Add vbKeyUp, 
"UP"
   m_colKeyMap.Add vbKeyF1, 
"F1"
   m_colKeyMap.Add vbKeyF2, 
"F2"
   m_colKeyMap.Add vbKeyF3, 
"F3"
   m_colKeyMap.Add vbKeyF4, 
"F4"
   m_colKeyMap.Add vbKeyF5, 
"F5"
   m_colKeyMap.Add vbKeyF6, 
"F6"
   m_colKeyMap.Add vbKeyF7, 
"F7"
   m_colKeyMap.Add vbKeyF8, 
"F8"
   m_colKeyMap.Add vbKeyF9, 
"F9"
   m_colKeyMap.Add vbKeyF10, 
"F10"
   m_colKeyMap.Add vbKeyF11, 
"F11"
   m_colKeyMap.Add vbKeyF12, 
"F12"
   m_colKeyMap.Add vbKeyF13, 
"F13"
   m_colKeyMap.Add vbKeyF14, 
"F14"
   m_colKeyMap.Add vbKeyF15, 
"F15"
   m_colKeyMap.Add vbKeyF16, 
"F16"

End Sub

转载于:https://www.cnblogs.com/fengju/archive/2005/09/26/6336364.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uva 1615——Highway

题意&#xff1a; 给定平面上n个点&#xff0c;和一个值D&#xff0c;要求在x轴上选出尽量少的点&#xff0c;使得对给定的点&#xff0c;都有一个点离他的欧几里德距离步超过D。 思路&#xff1a;区间覆盖问题。以平面上的点为圆心&#xff0c;以D为半径&#xff0c;求出来一个…

解决linux写入ntfs盘时报错:只读文件系统

[2018.10.28 更新] 可能因为在挂载wimdows盘后&#xff0c;强制关机造成的&#xff0c;可使用 sudo ntfsfix /dev/*** 来修复。其中&#xff0c;***为具体哪个盘&#xff0c;例如sudo ntfsfix /dev/sda4 之前一直可以对windows盘进行读写操作&#xff0c;但今天突然不能用了&am…

家里装AD了

通过关系&#xff0c;家里终于装上了ADSL&#xff0c;而且还是130包月的&#xff0c;还免了调测费转载于:https://www.cnblogs.com/d9394/archive/2005/09/28/10611828.html

uva 1613——K-Graph Oddity

题意&#xff1a;输入n个点m条边的联通图&#xff0c;n为奇数&#xff0c;设k为最小的奇数&#xff0c;使得每个点的度数不超过k&#xff0c;要求把节点都涂上颜色&#xff0c;使得相邻节点颜色不一样。 思路&#xff1a;dfs。k的值为奇数&#xff0c;所以k为节点最大度数&…

应用ADO.net得到表

----------------------------------------------------------开发者&#xff1a;开发时间&#xff1a;2004.9.9功能&#xff1a;应用ADO.net得到表----------------------------------------------------------Imports Zy_DataAccessImports SystemImports System.DataImports…

uva 11093——Just Finish it up

题意&#xff1a;环形跑道上有n个加油站&#xff0c;每个站可以加pi单位的油&#xff0c;从当前站开到下一站需要qi的油&#xff0c;问是否能够环游一圈。 思路&#xff1a;枚举。首先如果总需求量>总供给量&#xff0c;那么不可能。否则就枚举起点&#xff0c;如果油箱里的…

【计算机网络】TCP IP通信处理过程

1.数据包首部 每个分层中都会对所发送的数据附加一个首部&#xff0c;其中包含了该层必要的信息&#xff0c;如发送端地址、接收端地址以及协议等相关信息。 2.发送数据包 1&#xff09;应用程序处理 进行编码处理&#xff08;相当于表示层功能&#xff09;&#xff0c;管…

感觉自己越来越浮躁

重新审视自己的技术走向&#xff0c;不得不承认&#xff0c;越来越向上层迈进。但是这不是我喜欢的&#xff0c;一味的追求快速开发&#xff0c;希望自己的开发速度能一个人顶10个人&#xff0c;但是往往容易在项目中迷失自己&#xff0c;很希望能快点结束这段噩梦般的项目&…

uva 12627——Erratic Expansion

题意&#xff1a;一开始有1个红气球&#xff0c;每小时一个红气球都会变成3个红气球和1个蓝气球&#xff0c;1个蓝气球会变成4个蓝气球&#xff0c;问k个小时后a行到b行的红气球的数量。 思路&#xff1a;递推。a为偶数时&#xff0c;计算a1到b以及a本行的红气球数。b为奇数时&…

【计算机网络】数据链路相关技术

1.MAC地址 MAC地址长48字节。在使用网卡的情况下&#xff0c;一般会将MAC地址烧入到ROM中&#xff0c;任何一个网卡的MAC地址都是唯一的。例如 00:10:5A:70:33:61 MAC地址的3~24位表示厂商识别码&#xff0c;每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个…

uva 714——Copying Books

题意&#xff1a;把一个m个整数的序列划分成k个连续非空的子序列&#xff0c;使得子序列和的最大值最小。 思路&#xff1a;二分。遇到最大值最小大多都二分了&#xff0c;让划分的子序列都不超过x&#xff0c;根据x来judge最终结果k个是多还是少&#xff0c;然后二分来调整x直…

[JavaScript]让footer总是停留在页面的底部(footer all the way at the bottom of the page)

在网页的底部总是保留着公司的版本信息&#xff0c;如何是这部分信息来实现呢&#xff1f;下面的一段javascript演示了如何让footer总是停留在页面的底部。这段代码我在实际使用的时候不是特别的完美&#xff0c;在包含有其他javascript控制的页面和控件的时候会出现重叠的现象…

【计算机网络】IP地址

IP地址的基础知识 在TCP/IP通信中&#xff0c;IP地址用于识别主机和路由器。 1.IP地址的定义 IPv4地址为32位&#xff0c;IPv6地址为128位。&#xff08;以下以IPv4为例&#xff09; 将32位的IP地址分为4组&#xff0c;每组8位&#xff0c;每组间用“.”隔开&#xff0c;再…

uva 1451——Average

题意&#xff1a;给定一个长度为n 的01串&#xff0c;然后选一个长度至少为L的子串&#xff0c;使得子串的平均值最大。 思路&#xff1a;单调队列。如果把所有的前缀和都求出来&#xff0c;那么所求即为max((s[j] - s[i]) / (j - i)) &#xff0c;转化成图也就是求斜率最大的那…

近期工作:帮忙师兄

C# 获取机器硬件状态简单的解释器 C# XML读写转载于:https://www.cnblogs.com/anf/archive/2005/12/14/296880.html

【操作系统】哲学家就餐问题

问题 有五个哲学家围坐在一圆桌旁&#xff0c;桌中央有一盘通心粉&#xff0c;每人面前有一只空盘子&#xff0c;每两人之间放一只筷子。每个哲学家的行为是思考&#xff0c;感到饥饿&#xff0c;然后吃通心粉。为了吃通心粉&#xff0c;每个哲学家必须拿到两只筷子&#xff0…

uva 11134——Fabled Rooks

题意&#xff1a;给定一个n*n的期棋盘放n个车&#xff0c;要求任意车之间不能相互攻击&#xff0c;并且每个车都在相应的方框内。 思路&#xff1a;贪心。因为没有对角线的条件约束&#xff0c;所以放的行号和列号没有影响。那么单独求出来行号和列号即可。对于每一行&#xff…

VC.NET 字节对齐设置

项目&#xff0d;>属性->C/C->代码生成->结构成员对齐 转载于:https://www.cnblogs.com/smartstone/archive/2005/12/14/296909.html

java 设计作业——学生类的基本练习

设计要求&#xff1a; 建立一个学生类&#xff0c;有姓名、学号、3门课成绩、总分等信息&#xff0c;能输入输出学生数据&#xff0c;并能对总分进行排序&#xff0c;打印名次。思路&#xff1a;老师给的思路全部都封装在了一个类中&#xff0c;我写的则分成了两个类&#xff0…

linux下使用c++操作mysql

关于mysql的基础知识可以参考 mysql基础 首先&#xff0c;需要确保已安装mysql-server&#xff0c;mysql-client&#xff0c;mysql-devel。 一、常用类型介绍 1. MYSQL 用于定义一个mysql对象&#xff0c;便于后续操作确定要操作的数据库是哪一个。 MYSQL mysql; //mysql标…