關於我自己

2013年11月20日 星期三

視窗操作

主旨:

1.發這一篇,我是覺得蠻有趣的說
開發是用VB6.0 ( 跟C++幾乎是大同小異,所以可以參考看看原理)
用到的涵式會用到
GetWindow,GetWindowStructure,FindWindow ,SendMessage

利用 SendMessage 涵式對視窗做操作

SendMessage 部分參數:
Private Const WM_CLOSE = &H10   '關閉視窗
Private Const WM_SETFOCUS = &H7 '設定焦點
Private Const WM_KEYDOWN = &H100 '鍵盤按下
Private Const WM_KEYUP = &H101 '鍵盤放開
Private Const WM_GETTEXT = &HD  '得到文字
Private Const WM_SETTEXT = &HC  '設定文字
Private Const WM_GETTEXTLENGTH = &HE  '得到文字長度
Private Const BM_CLICK = &HF5 '點擊按鈕

要比較完整的可以到GOOGLE打WM_SYSCOMMAND message搜尋就可以搜尋
到微軟的官方API說明

2.要如何節取到想要的視窗操作權呢?

先解說一下,每一個視窗都會有一個編碼代號,視窗裡面會有許多不同元件
也都會有編碼代號,只要取得編碼代號,就可以利用SendMessage向物件作操作

3.要取得編碼代號將會GetWindow,FindWindow兩個涵式
 GetWindowStructure將是得到元件的型態名稱

4.

5.


程式碼:
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
 
Private Const WM_CLOSE = &H10  '關閉指令
Private Const WM_SETFOCUS = &H7
Private Const WM_GETDLGCODE = &H87
Private Const WM_IME_KEYDOWN = &H2
Private Const WM_GETTEXT = &HD
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXTLENGTH = &HE
Private Sub Command1_Click()

Dim hwnd As Long, hwndex As Long
Dim lpbuffer As String
Dim a As String
Dim slen As Integer
lpbuffer = Space(255)

hwnd = FindWindow(vbNullString, "小算盤")
If hwnd <> 0 Then
    hwndex = FindWindowEx(hwnd, 0, "Edit", vbNullString)
    SendMessage hwndex, WM_SETTEXT, 0, ByVal Text1.Text
End If


6.
    '  搜尋子元件
    '  擷取子元件編號代碼

    num_children = 0
    child_hwnd = GetWindow(window_hwnd, GW_CHILD)
    Do While child_hwnd <> 0
        num_children = num_children + 1
        ReDim Preserve children(1 To num_children)
        children(num_children) = child_hwnd
        child_hwnd = GetWindow(child_hwnd, GW_HWNDNEXT)

    Loop

7.


  

    For i = 1 To 2
   
    If i = 1 Then
    slen = SendMessage(A22(i), WM_GETTEXTLENGTH, 0, 0) '
    SendMessage A22(i), WM_GETTEXT, slen + 1, ByVal lpbuffer
    frmWindowList.Text1.Text = lpbuffer
    Else
    slen = SendMessage(A22(i), WM_GETTEXTLENGTH, 0, 0) '
    SendMessage A22(i), WM_GETTEXT, slen + 1, ByVal lpbuffer
     frmWindowList.Text2.Text = lpbuffer
    End If



8.
   





2013年11月3日 星期日

Lego 兩個馬達車理念

1.

2.

3.

4.

5.

6.

想想看如何我要在兩個馬達在同時運轉的時候,

如果我要左右彎的時候我要如何去控制兩個馬達呢?

2013年8月9日 星期五

Easy Java Simulation


open source physics 網站:
http://www.compadre.org/osp/index.cfm

說明:
利用Java程式模擬物理動畫,可輸入參數值
並有公式跟範例和說明文件,讓使用者更容易了解物理學

大約簡單介紹一下:
至於安裝Java SDK部分故不講,因Google搜尋就一堆範例了

1.
 2.

 3.
4.
5.
6.


功能強大,很多有範例可以下載擴充,跟自己定義

下面兩個網站都是我蠻喜歡的

台灣師範大學物理系 論壇:

http://www.phy.ntnu.edu.tw/demolab/phpBB/index.php?viewcat=10#cat10

GameDev.Net 網站:
http://www.gamedev.net/forum/20-math-and-physics/













2013年7月18日 星期四

使用Android 連 Eclipse Web Service

主要目的:

使用Eclipse在Tomcat架Web Service

讓Android 可以連Web Service

而可以透過Web Service 連MS SQL Server


1.新增一個動態網頁專案

2.
3.
4.
5.創造一個class檔案把程式寫在裡面 ~ 而連接MS SQL的程式可以寫在裡面
6.
7.新增Web Service 操作
8.
9.
10.
11.
12. 完成 Web Service
13.輸入網址測試 Web Service
14.
15.
16.
17.
18.
19.使用Android連線


2013年7月6日 星期六

圖形驗證

最近在看某微積分的應用

想過好像大部分都幾乎用整數在計算紙標一標坐標,看一下

就當做驗證過 ~ 用程式跑個圖形 ~ 果然跟課本一模一樣

2.

3.

4.

5.

  6.

 

 

 

 


2013年4月7日 星期日

Java 常用到的日期問題

1.日期 = 上週 下週
2.日期 = 前一天 後一天
3.日期 = 相差天數

-------------------------上週 下週------------------------------------------
package com;

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class Test01 {

    public static void main(String args[]){

        int i=0;

          Calendar cal = Calendar.getInstance();

          Calendar cal1 = Calendar.getInstance();

          int n = i;

          String monday;

          cal.add(Calendar.DATE, n*7);

          monday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());


          int n1 = i-1;

          String monday1;

          cal1.add(Calendar.DATE, n1*7);

          monday1 = new SimpleDateFormat("yyyy-MM-dd").format(cal1.getTime());

          System.out.println(monday1+"  :  "+monday);

    }

}


-------------------------前一天 後一天-----------------------------------

package com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Test02 {
    public static void main(String[] args) throws ParseException {  
         
                String Date_Text ="2013-03-31";
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
     
                Calendar cal = Calendar.getInstance();  
                cal.setTime(sdf.parse(Date_Text));  
                cal.add(Calendar.DATE, -1);//減一天  
              //cal.add(Calendar.MONTH, n);//增加一个月  
     
                System.out.println(" 增加一天 : "+ sdf.format(cal.getTime()));  
     
           
    }
}
--------------------------相差天數-----------------------------------
package com;
import java.util.Date;

public class Test03 {
    public static void main(String[] args) {
          String s1 = "2013-04-01";
          String s2 = "2013-03-27";
          String t1 = s1.replace('-','/');
          String t2 = s2.replace('-','/');
          try{
              Date dt1= new Date(t1);
              Date dt2= new Date(t2);
              System.out.println("dt1="+dt1.getTime());
              System.out.println("dt2="+dt2.getTime());
              long l = dt1.getTime() - dt2.getTime();   
              System.out.println(l);
              System.out.println("相差天數 "+l/60/60/1000/24);
            }catch(Exception e){
                System.out.println("exception"+e.toString());
            }
    }
}

2013年3月1日 星期五

2013年2月15日 星期五

Java - URLEncoder與Base64 編碼應用

Java - URLEncoder與Base64 編碼應用

java.net.URLEncoder.encode => 加密

java.net.URLDecoder.decode => 解密

最常用UTF-8跟Big5

API說明文件:
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html

PS:0到9還有 ".", "-", "*", "_"等特殊符號不能編碼
Base64編碼

如果想用把特殊符號等編碼就用Base64

 請下載 commons-codec-1.7.jar 檔案


 如果把一堆參數加在一起編碼用 - 符號等做區隔

像姓名跟年紀跟性別等參數加在一起編碼

然後再接收端區分    例如:  姓名-年紀-性別


Code:
 import java.util.*;

public class Test03 {
    public static void main(String args[]){
        String Text1="ABC-DEF-GHI-JKL";
        List<String> list = new ArrayList<String>();
        System.out.println("文字長度 : "+Text1.length());
        int l =Text1.length();
        for(int i=0;i<=l;i++){
            if(i==0){
              // System.out.println(Text1.substring(0,i));
            }else{
              // System.out.println(Text1.substring(i-1,i));
              if(Text1.substring(i-1,i).equals("-"))
              {
                  System.out.println(Text1.substring(i-1,i));
                  System.out.println(" i : "+i);
                  list.add(String.valueOf(i));
              }
            }
        }
        System.out.println(" Size : "+list.size());
        System.out.println("<-----擷取----->");
        for(int j=0;j<list.size();j++)
        {
            System.out.println(list.get(j));
            if(j==0){
            System.out.println(Text1.substring(0,Integer.valueOf(list.get(j))-1));
            }else{
                System.out.println(Text1.substring(Integer.valueOf(list.get(j-1)),Integer.valueOf(list.get(j))-1));
            }
        }
    }
   
}

2013年1月5日 星期六

JavaMelody 網頁監控程式

JavaMelody 官方網站

http://code.google.com/p/javamelody/

介紹:
JavaMelody 

可監控網頁幾乎所有在運行的效能

例如:
Menory  
CPU      
Session
Thread   => 執行緒
Active JDBC Connection 活動的JDBC 連線
Used jdbc connection      已使用JDBC 連線
JVM的效能監控
等等..............................(功能可以看官網的介紹)


1.首先到官網下載war檔案

 http://code.google.com/p/javamelody/downloads/list


2.在Eclipse 引用war檔案


3.準備在自己的專案加入JavaMelody元件
 javamelody.jar 和 jrobin-x.jar
並在專案web.xml加入一些文字

下載兩個檔案 的ZIP
 加入文字

        <filter>
                <filter-name>monitoring</filter-name>
                <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>monitoring</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <listener>
                <listener-class>net.bull.javamelody.SessionListener</listener-class>
        </listener>

4.啟動Tomcat

請記得將您的專案和Javamelody 在Tomcat底下一起執行

5.執行後