分类 默认分类 下的文章

Windows的系统服务

今天鬼哥在二叔群提到系统服务,主要想实现不登录就运行一些脚本的目的吧,以前做过类似的小程序,不过后来忘掉了,这次一定要记录下来,查询了一些相关资料,.Net提供了相关模板。
首先建立一个工程,我用的是VS2010。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.IO;

namespace TestService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        Timer timer;
        int counter;

        protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("MikuQ服务启动");
            counter = 0;
            timer = new Timer();
            timer.Interval = 10000;
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = true;
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            counter++;
            StreamWriter sr = new StreamWriter(@"D:\mikuq.txt", true);
            sr.WriteLine(counter.ToString());
            sr.Close();
        }

        protected override void OnStop()
        {
            EventLog.WriteEntry("MikuQ服务停止");
            timer.Enabled = false;
        }
    }
}

在Service1.cs设计页面,点击右键添加安装程序
在ProjectInstaller.cs设计页面中选择serviceInstaller1
在属性中设置

Description(系统服务的描述):MikuQ's test Service
DisplayName (系统服务中显示的名称):MikuQ(mikuq.com) Service
ServiceName(系统事件查看器里的应用程序事件中来源名称):MikuService

serviceProcessInstaller1属性设置Account下拉设置成LocalSystem,应该是最高权限了
在C:\Windows\Microsoft.NET\Framework\v2.0.50727找到InstallUtil.exe,复制到debug文件夹
Ctrl+Shift+B编译出TestService.exe,然后运行InstallUtil TestService.exe安装服务,安装服务需要管理员权限
如果需要卸载服务InstallUtil -u TestService.exe

参考资料:《C# 创建系统服务并定时执行

C/C++中的指针

最近在用C语言,后来发现还要用C++做库,自然要用到称作指针的东西,以前虽然基本会用了,不过又忘了,只能重头学起了

假设a的地址是1000,也就是在1000的地方开辟一个int型的空间,放了一个数字8

int a=8;

q是一个指针,指向一个int类型,它可能存在地址2000的位置

int *q;

把a的地址写给q指针,也就是把1000存在了2000的位置,**这里用到了q是地址q里的内容8,&a是变量a的地址1000*

q=&a;

还是定义指针p,不过它是指向一个指向int地址的指针,比如指向上边q的地址2000的指针,p存在3000里

int **p;

把q指针的地址2000放到指针p里

p=&q;

- 阅读剩余部分 -

导出Excel中指定单元格的图片

想导出excel中的图片,并用某个单元格的数据命名,结果发现找不到图片的单元格,这可怎么办,发现图片是存储在单独的Shapes中的,所以只能根据图片的Top和行的Top比较判断图片在哪一行了,这里用到一个Excel的引用

using Microsoft.Office.Interop.Excel;

然后就是提取和保存代码了

string fn = @"Book1.xls";
ApplicationClass excel = new ApplicationClass();
Workbook workbook = excel.Workbooks.Add(fn);
excel.UserControl = true;
excel.Visible = false;
Worksheet sheet = workbook.Worksheets.get_Item(1) as Worksheet;
int row = 0;
Range range;
for (int i = 1; i <= sheet.Shapes.Count; i++)
{
    Shape s = sheet.Shapes.Item(i) as Shape;
    float img_top = s.Top;
    do
    {
        row++;
        range = sheet.Cells[row, 1] as Range;
    } while (img_top - 5 > (double)(range.Top));
    string f = "img_" + range.Text + ".jpg";
    Clipboard.Clear();
    s.CopyPicture(Appearance.Button, XlCopyPictureFormat.xlBitmap);
    IDataObject iData = Clipboard.GetDataObject();
    if (iData != null && iData.GetDataPresent(DataFormats.Bitmap))
    {
        System.Drawing.Image img = Clipboard.GetImage();
        if (img != null)
        {
            img.Save(@"" + f, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
}
workbook.Close(false, null, null);
excel.Quit();

参考文献:
http://blog.163.com/jiajia8166@126/blog/static/1813520201282753358819/?latestBlog
http://blog.sina.com.cn/s/blog_4c6e822d0102e2f0.html
http://www.cnblogs.com/MR_ke/archive/2010/03/08/1680576.html

学用1602

为什么是1602?为什么不是12864?为什么不是TFT?为什么不是OLED?
1、1602块儿大又便宜,目前大概5-6元,不含运费
2、1602似乎比较省电,大概5v2ma的样子
3、反正先学学看吧
5.jpg

- 阅读剩余部分 -