当前位置:首页 > 每日看点 > 正文内容

Excel很厉害有什么用?

卡卷网1年前 (2024-12-19)每日看点178

我拿vba做了一个德州扑克的荷官,可以在QQ上组织一台6人桌的线上比赛。

Excel 是天然的数据存放器。十万个字符量级以下,对延迟要求不高(响应延迟1s左右)的游戏(卡牌游戏,文字冒险等)都可以用EXCEL+一台电脑当服务器。

(也可以不用Excel,用Python,java都是一样的,但这里只讨论Excel,别问我为什么,问就是情有独钟。)

玩家数据就放在Excel里面,非常方便。效果如下,上班时可以和朋友摸鱼打牌↓


Excel很厉害有什么用?  第1张


Excel很厉害有什么用?  第2张


呃,稍微讲下怎么实现吧,稍微……嗯……牌类游戏,卡牌对战都是相同逻辑。

1.你要能监控自己的QQ聊天窗口(如果你要用qq窗口作为游戏面板的话)

如果你会自己创建一个网页服务器或者其他云服务器,然后再自己开发一套游戏界面。那你是大佬,求求你给我面试机会吧……

在vba里监控屏幕有很多办法,主要是调用windows自带的api——

getdc获取屏幕句柄

releasedc释放内存

(不释放有你好果汁吃,别问我怎么知道的)

GetPixel获取像素点颜色

进阶版:GetDIBits(快速获取全屏幕像素点)

使用方法自己去研究,我不可能想写论文一样告诉你怎么使用这些玩样。你可以在Microsoft文档里找到使用方法。


2.你要能控制自己的鼠标去“读消息”

由于QQ近期没有可用的api,所以我们只能用视觉控制这种暴力方法来奴役聊天窗口,api——

getcursorpos 找鼠标位置

mouse_event 控制鼠标运动

好,到这里为止,你就可以通过vba在qq聊天窗口里随便控制鼠标来复制需要的消息了。

当然,如果你不想控制鼠标点来点去,那么移步到外接OCR


3.把输出消息粘贴到聊天框里去

这里我打的是剪切板的主意

我们引用Excel自带的Msforms 2.0 object

然后使用object.settext/putinclipboard的方法来将字符放入剪切板。

然后用sendkeys函数调用Ctrl v,把内容粘贴到聊天框里去。

至此,一个简易框架就搭完了。

后续所有问题都只是码代码来补充游戏逻辑。


PS.牌友可以私聊我入群,我们好好交流技术♂啊~



然后给你们分享一个好玩的东西,这东西运行起来可以让你指定的窗口在屏幕上跳舞↓

Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As Any) As Long

Declare PtrSafe Function MoveWindow Lib "user32" (ByVal hWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long


Sub MoveWindowUpDown()

Dim hwnd As Long

Dim rect(1 To 4) As Long

Dim x As Long, y As Long, width As Long, height As Long

Dim stepSize As Long

Dim direction As Long


' 窗口标题(替换为你需要控制的窗口标题)

Dim windowTitle As String

windowTitle = "窗口标题" ' 例如: "Notepad"


' 查找窗口句柄

hwnd = FindWindow(vbNullString, windowTitle)

If hwnd = 0 Then

MsgBox "找不到窗口!", vbExclamation

Exit Sub

End If


' 获取窗口位置和大小

GetWindowRect hwnd, rect(1)

x = rect(1)

y = rect(2)

width = rect(3) - rect(1)

height = rect(4) - rect(2)


' 设置步长和初始移动方向

stepSize = 10 ' 每次移动的像素大小

direction = 1 ' 1表示向下移动,-1表示向上移动


' 循环移动窗口

Do While True

If direction = 1 Then

' 向下移动

MoveWindow hwnd, x, y + stepSize, width, height, True

y = y + stepSize

If y >= 600 Then direction = -1 ' 到达下边界时开始向上移动

Else

' 向上移动

MoveWindow hwnd, x, y - stepSize, width, height, True

y = y - stepSize

If y <= 0 Then direction = 1 ' 到达上边界时开始向下移动

End If


' 控制移动速度

DoEvents

Application.Wait Now + TimeValue("00:00:01") ' 1000毫秒

Loop

End sub


呃……你问我怎么获取窗口标题,好吧↓


Declare PtrSafe Function EnumWindows Lib "user32" (ByVal lpEnumFunc As LongPtr, ByVal lParam As Long) As Long

Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Declare PtrSafe Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long


Dim Titles As Collection


' 枚举窗口的回调函数

Function EnumCallback(ByVal hWnd As Long, ByVal lParam As Long) As Long

Dim title As String

Dim length As Long

' 获取窗口标题长度

length = 255

title = String$(length, vbNullChar)

' 获取窗口标题文本

length = GetWindowText(hWnd, title, length)

title = Left$(title, length)

' 如果窗口可见且标题不为空,保存到集合

If length > 0 And IsWindowVisible(hWnd) Then

Titles.Add title

End If

EnumCallback = 1 ' 继续枚举

End Function


Sub GetAllWindowTitles()

Dim i As Long

Set Titles = New Collection

' 枚举所有窗口

EnumWindows AddressOf EnumCallback, 0

' 输出所有窗口标题

If Titles.Count > 0 Then

For i = 1 To Titles.Count

Cells(i,1) = Titles(i) ' 在第一列中显示标题

Next i

Else

MsgBox "未找到任何窗口标题!", vbInformation

End If

End sub


快去试试吧~拿窗口来做屏保

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/12/4957.html

分享给朋友:

相关文章

有哪些好用不火的软件?

有哪些好用不火的软件?

20个无敌冷门的小众APP,好用到内存爆了都不想卸载,个个是宝藏!特别是第4、13、19个,大多数人都没玩过~喜欢可以双击屏幕取走哦~1、【毒汤日历 】 – 你的每日快乐源泉[iPhone/Android]好用指数:⭐⭐⭐⭐⭐下载地址:各...

为什么我们一直在给B站充大会员但B站却一直处于亏损状态?

我讲一下离谱的真相吧,欢迎喷我。很多人都觉得B站在赶走人才,赶走优秀的长视频创作者,也觉得知乎在这么做,是没错的。确实在这么做。而原因很简单。只有影响力很大的KOL才有商业价值。(KOL是指“关键意见领袖”)而你说你是人才?对不起,人才不赚...

你是如何在不依靠工资收入的情况下赚到一万元的?

你是如何在不依靠工资收入的情况下赚到一万元的?

分享几个路子稳,门槛低,变现快,适合年轻人的靠谱的副业。绝对不是送外卖、滴滴、搬砖等等的苦力活,这几个副业都是能是性价比极高,还能让你快速成长的工作。想通过副业实现暴富、立马月入过万的同学,建议速速划走。今天撇哥就给大家分享100+个靠谱赚...

大量刷短视频,会让大脑变笨拙吗?

会。我曾经是一名高三学生,亲身实践过。当时集中突破语文,每天都在刷语文卷。然后有一天想躺一下刷手机,结果短视频刷完了,我再去看哪些文章,只觉头晕眼花,难以理解文字。不过好在这种情况是短时间的,过了一天我的能力又恢复了。在我看来,长期刷短视频...

有哪些让你目瞪口呆的 Bug ?

有哪些让你目瞪口呆的 Bug ?

成都有个监狱情况比较特殊,关押的基本全是重犯,而且还都是经济犯和政治犯,他们以前都是一方大佬,在自己的一亩三分地翻手为云覆手为雨,无非是不小心中箭落马或帮老大顶锅才进监狱,所以即使进来了,他们依然保持着体面和骄傲,依从性差,虽然不至于和监狱...

想学习Linux下的ELF文件有什么好书推荐吗?

想学习Linux下的ELF文件有什么好书推荐吗?

大家好,这里是物联网心球。 今天我们来聊聊ELF文件,了解一下Linux如何创建进程以及ELF文件如何转变成Linux进程?1.什么是ELF文件? ELF(Executable and Linkable Format)文...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。