Posts Tagged ‘C#/.NET’

mysql局域网访问设置及C#连接方法

星期三, 2月 8th, 2017

局域网连接mysql报错:
ERROR 1130: Host '192.168.1.36' is not allowed to connect to this MySQL server

解决方法:

可能是帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" 或添加一个用户为“%”  。

(更多…)

Windows 7下部署IIS运行asp.net

星期二, 9月 22nd, 2015

最近在研究asp.net,为了测试就想在Windows 7下部署IIS来测试和运行asp.net,开局不利,搞出一大堆错误,经多方查错,现在总算可以运行了。

首先是安装IIS支持asp.net,先是从网上找到安装选项,安装成功后我自己也截个完整的选项图上来:

(更多…)

解决C#使用Dotfuscator混淆的问题

星期一, 11月 17th, 2014

使用Visual Studio自带的Dotfuscator可以对C#等.Net架构编译出来的exe进行简单的混淆(类名、函数名、变量名替换),让通过Reflector或ILSpy反编译出来的代码可读性不高,可以达到一般开发人员不容易抄袭的效果。

但在使用Dotfuscator过程中要注意一点就是,通过References引用的外部dll生成的整个namespace要排除在混淆之外(比如引用opcdaauto.dll生成的OPCAutomation namespace在排除),否则在使用delegate的地方会报错,导致程序无法正常执行。

C#使用Attribute时的多语言化

星期一, 9月 23rd, 2013

通常在C#中我们用PropertyGrid来实验属性页功能,然后定义一个类,把对象实例传给PropertyGrid的SelectedObject属性。

然后在属性类中定义各个属性之前我们加各个Attribute调用来实现属性页上内容,如下代码:
[DisplayNameAttribute("XXX Name")]
[DescriptionAttribute("XXX Description")]
[CategoryAttribute("YYY")]
public string Name { get {...} set{...} }

现在需要实现多语言化,但在Attribute后的括号里不能使用Resources.XXX之类的内容来实现,因为那里需要常量。

解决办法是派生这些Attribute类,重载一些函数实现:

1. DisplayNameAttribute类我们重载public virtual string DisplayName { get; }属性

2. DescriptionAttribute类我们重载public virtual string Description { get; }属性

3. CategoryAttribute类我们重载protected virtual string GetLocalizedString(string value);方法

(更多…)

C#多语言实施方法

星期一, 4月 8th, 2013

开发环境:C# 2008

默认语言:英语(美国) en-US

扩展语言:中文(简体) zh-CN

前提条件:要在项目稳定后,再做多语言本地化

要求:代码中一定不要使用硬编码,统一使用Resoures.XXX来使用资源中的字符串

(更多…)

C#窗体在Windows 7下显示大字体的解决办法

星期五, 4月 20th, 2012

在XP 英文版下VB或C#的默认窗体的字体都是MS Sans Serif, 8.25pt(8号字体),这个并不是TrueType字体,因此微软在Windows 7下对这些字体的支持并不好,原因可能是不适合Vista后Windows的视觉效果吧。

当把XP上面的窗体拿到Windows 7下打开时会找不到MS Sans Serif字体,默认字体改成SimSun, 9pt(9号字体),所以新编译或在XP下编译的窗体会显示成大字体,部分文字可能看不到。

解决办法是使用TrueType字Microsoft Sans Serif, 8.25pt(8号字体)代替,需要逐一修改各窗体的字体而不是使用默认字体,经测试替换后窗体不需要做任何调整就可以编译后在XP和Win7下正常显示。

C# WebBrowser控件使用技巧补充

星期六, 1月 21st, 2012

之前写过一篇“C# WebBrowser类使用总结”,前段时间因密码泄漏事件淘宝登录启用了验证码功能,导致之前所写的淘宝店铺助手使用的WebClient没有用武之地,当然还可以考虑弄个验证码自动识别或弹出给用户输入的做法,但没玩过这方面的编程还是无从下手。

没办法只好改用回WebBrowser控件,实际使用中碰到3个问题:
1. URL重复提交不被处理的问题。
2. session超时后需要重新登录,但上回登录成功的cookie还生效,实际上并没有登录操作就被判断为已经登录。
3.  页面弹出窗体自动无法自动确认导致后续页面无法执行的问题。

(更多…)

C# WebBrowser类使用总结

星期三, 1月 26th, 2011

之前使用WebRequest类来操作网页实现一些网站的外挂功能,最典型的例子就是用C#写个程序作为淘宝店铺的外挂,实现宝贝和订单管理等功能,比如我写的这个《淘宝店铺助手》实现了自动理货、自动好评、自动厨窗和掌柜推荐、自动检查订单和提醒等。

但是操蛋的淘宝老是修改登录规则,搞得这类外挂经常宕机,比如前天下午3点开始就发现我那个店铺助手无法登录,包括使用PHP curl系列函数操作店铺也挂掉了。

(更多…)

C#的几点经验总结

星期三, 9月 15th, 2010

1. 检查同一位置的应用程序是否已经运行

private static bool GetRunningProcessByProcessFullName(out Process runningProcess)
{
    bool returnValue = false;
    runningProcess = null;
    Process current = Process.GetCurrentProcess();
    Process[] processes = Process.GetProcessesByName(current.ProcessName);
    string assemblyName = Assembly.GetExecutingAssembly().Location;
    foreach (Process process in processes)
    {
        if (process.Id != current.Id)
        {
            if (process.MainModule.FileName == assemblyName)
            {
                runningProcess = process;
                returnValue = true;
                break;
            }
        }
    }
    return returnValue;
}

(更多…)

正则表达式中使用问号可以取消贪婪模式

星期五, 8月 27th, 2010

使用正则表达式抽取整个页面的特定内容是非常方便的,但在使用时有一些细节问题还是很关键的,比如合理的使用问号(?)可以取消贪婪的抽取问题。

比如页面中包含有很多段<p>...</p>,如果我们使用下面的方法抽取:

Regex rx = new Regex("<p>(.*)</p>");
Match match = rx.Match(str); // match.NextMatch(); 可用来取下一个

结果是只提出一个,内容是从第一个<p>开始到最后一个</p>结束。

这里我们只要加上问号,如下代码:

Regex rx = new Regex("<p>(.*?)</p>");
Match match = rx.Match(str);

这时提到出来的就是一个个独立的<p>...</p>,有时这才是我们想要的。

另外上面正则表达式里的括号也很有用,使用match.Group[0]得到匹配的结果,用match.Group[1]即得到括号中的内容。有多个括号按从外到内、从左到右的原则依次从Group里取。

PS. C#中还有个Group的概念,挺鬼异的,这里有解释,抽空研究一下:http://blog.csdn.net/zhoufoxcn/archive/2010/03/09/5358644.aspx

Updated:更多正则表达式的揭密参见这里:http://www.regexlab.com/zh/regref.htm