검색결과 리스트
분류 전체보기에 해당되는 글 253건
- 2009.01.09 [C#]DoubleBuffered -_-a
- 2009.01.06 [C#]트레이 아이콘 버그.(OS 종료시)
- 2008.12.26 [C#]API 사이트
- 2008.12.26 [C#]TCP/IP + SQL -_-a
- 2008.10.05 [C#]MSI 자동배포 생성
- 2008.09.30 [C#]다운로드 Method
- 2008.09.29 [C#]윈도우 영역 크기 얻어오기
- 2008.09.29 [C#]Parse와 Convert의 차이점
- 2008.09.18 [C#]파일 감시
- 2008.09.18 [C#]네트워크 폴더 접근
글
-_-a 이를 쓰는 방법은..
this.DoubleBuffered=true;
요렇게~ 해 주면 된다.
근데 한가지 문제!! -_- 부하가 많이 갈 경우?
-_-... 짤 없이 직접 처리해야한답 -_-
설정
트랙백
댓글
글
3.0에서도 실제 해 본 것은 아니지만 여기에 대한 문제점 해결을 찾다보니
몇몇 방법이 있다는 것을 알았다.
1. Flag 변수 - 시스템 종료인지 단순한 창의 종료인지 구분
2. WndProc()함수 overriding
3. Form_Closing()함수 수정
이벤트 순서 : WM_QUERYENDSESSION - Form Close - WM_ENDSESSION
public static bool bEndSession = false;
/*logoff, shutdown, restart, poweroff */
protected override void WndProc(ref Message m)
{
const int WM_QUERYENDSESSION = 0x0011;
const int WM_ENDSESSION = 0x16;
const int WM_SYSCOMMAND = 0x112;
const int WM_CLOSE = 0x0010;
const int SC_CLOSE = 0xF060;
switch (m.Msg){
case WM_QUERYENDSESSION:
Console.WriteLine("WM_QUERYENDSESSION");
bEndSession = true;
break;
case WM_ENDSESSION:
Console.WriteLine("WM_ENDSESSION");
break;
case WM_SYSCOMMAND:
if (m.WParam.ToInt32() == SC_CLOSE)
{
Console.WriteLine("SC_CLOSE");
}
break;
case WM_CLOSE:
Console.WriteLine("WM_CLOSE");
break;
}
base.WndProc (ref m);
}
private void MainForm1_Closing(object sender, System.ComponentModel.CancelEventArgs e){
if (!bEndSession){
e.Cancel = true;
this.WindowState = FormWindowState.Minimized;
this.Hide();
}
else{
//WndProc()에서 처리하도록 함.
}
}
설정
트랙백
댓글
글
설정
트랙백
댓글
글
흠냐.. -_- 그냥 간단한 형식으로 만들었다
테스팅만 되게..
근데 -_- 근데!! 왜!!
-_- WrteLine만 해서 보낼 경우는 데이터가 왜 안가지 -_-;;
Flush()는 스트림을 비우는게 아닌감 -_-
난 그렇게 알고 있었는데...
뭐 암튼지간 -_- 여기 저기 기웃거림 뭔가 알겠지 -_-;;
******TCP/IP + DataBase Server Code 1:1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data.SqlClient;
namespace server
{
public partial class Form1 : Form
{
TcpListener server;
TcpClient client;
NetworkStream Stream = null;
StreamReader reader;
StreamWriter writer;
Thread reciive;
bool connect;
private delegate void MBox();
public Form1()
{
InitializeComponent();
}
private void Check()
{
try
{
client = server.AcceptTcpClient();
connect = true;
Stream = client.GetStream();
reader = new StreamReader(Stream);
writer = new StreamWriter(Stream);
reciive = new Thread(new ThreadStart(Recieve));
reciive.Start();
}
catch (Exception ex) { }
}
private void Recieve()
{
try
{
while (connect)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
string temp = reader.ReadLine();
if (temp.Length > 0)
{
Search();
}
}
}
}
}
catch (Exception ex) { }
}
private void Search()
{
string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
SqlConnection conn;
SqlCommand cmd;
SqlDataReader dr;
try
{
conn = new SqlConnection(tests);
conn.Open();
cmd = new SqlCommand("select id from ID_PW", conn);
cmd.CommandType = CommandType.Text;
dr = cmd.ExecuteReader();
while (dr.Read())
{
writer.WriteLine(dr.GetString(0));
writer.Flush();
}
dr.Close();
conn.Close();
}
catch (Exception ex) { }
}
private void Form1_Load(object sender, EventArgs e)
{
Thread checkThread = new Thread(new ThreadStart(Check));
checkThread.Start();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
connect = false;
if (reader != null)
reader.Close();
if (writer != null)
writer.Close();
if (server != null)
server.Stop();
if (client != null)
client.Close();
if (reciive != null)
reciive.Abort();
}
private void button2_Click(object sender, EventArgs e)
{
IPAddress addr = new IPAddress(0);
int port = 5425;
server = new TcpListener(addr, port);
server.Start();
Check();
button2.Text="Start";
}
}
}
*****TCP/IP Client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace client
{
public partial class Form1 : Form
{
TcpClient client;
StreamReader reader;
StreamWriter writer;
NetworkStream Stream;
Thread receive;
bool connect;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try{
client = new TcpClient();
client.Connect("192.168.1.209",5425);
Stream = client.GetStream();
connect = true;
reader = new StreamReader(Stream);
writer = new StreamWriter(Stream);
receive = new Thread(new ThreadStart(Recieve));
receive.Start();
}
catch(Exception ex){}
}
private void Recieve(){
try{
while(connect)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
string temp = reader.ReadLine();
if (temp.Length > 0)
MessageBox.Show(temp);
}
}
}
catch(Exception e){}
}
private void button2_Click(object sender, EventArgs e)
{
writer.WriteLine("search");
writer.Flush();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
connect = false;
if (reader != null)
reader.Close();
if (writer != null)
writer.Close();
if (client != null)
client.Close();
if (receive != null)
receive.Abort();
}
}
}
*********************************************************************************
1:다 Server
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data.SqlClient;
namespace server
{
public partial class Form1 : Form
{
TcpListener server;
TcpClient client = null;
NetworkStream Stream = null;
StreamReader reader = null;
StreamWriter writer = null;
Thread reciive=null;
Thread checkThread = null;
bool connect=false;
public Form1()
{
InitializeComponent();
}
private void Check()
{
string temp=null;
try
{
while (true)
{
temp = null;
client = server.AcceptTcpClient();
connect = true;
Stream = client.GetStream();
reader = new StreamReader(Stream);
writer = new StreamWriter(Stream);
temp = reader.ReadLine();
if (temp.Equals("search"))
{
Search();
}
else if (temp.Equals("search1"))
{
Search1();
}
temp = null;
}
}
catch (Exception ex) { }
}
private void Recieve()
{
try
{
while (connect)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
string temp = reader.ReadLine();
if (temp.Length > 0)
{
if (temp.Equals("search"))
{
MessageBox.Show(temp);
Search();
temp = null;
}
else if (temp.Equals("search1"))
{
MessageBox.Show(temp);
Search1();
temp = null;
}
}
}
}
}
}
catch (Exception ex) { }
}
private void Search()
{
string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
SqlConnection conn;
SqlCommand cmd;
SqlDataReader dr;
try
{
conn = new SqlConnection(tests);
conn.Open();
cmd = new SqlCommand("select id from ID_PW", conn);
cmd.CommandType = CommandType.Text;
dr = cmd.ExecuteReader();
while (dr.Read())
{
writer.WriteLine(dr.GetString(0));
writer.Flush();
}
dr.Close();
conn.Close();
}
catch (Exception ex) { }
}
private void Search1()
{
string tests = @"User Id=sa; Password=cjstkd; Server =192.168.1.209; Initial Catalog = test";
SqlConnection conn;
SqlCommand cmd;
SqlDataReader dr;
try
{
conn = new SqlConnection(tests);
conn.Open();
cmd = new SqlCommand("select pw from ID_PW", conn);
cmd.CommandType = CommandType.Text;
dr = cmd.ExecuteReader();
while (dr.Read())
{
writer.WriteLine(dr.GetString(0));
writer.Flush();
}
dr.Close();
conn.Close();
}
catch (Exception ex) { }
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
connect = false;
if (reader != null)
reader.Close();
if (writer != null)
writer.Close();
if (server != null)
server.Stop();
if (client != null)
client.Close();
if (reciive != null)
reciive.Abort();
}
private void button2_Click(object sender, EventArgs e)
{
IPAddress addr = new IPAddress(0);
int port = 5425;
server = new TcpListener(addr, port);
server.Start();
checkThread = new Thread(new ThreadStart(Check));
checkThread.IsBackground = true;
checkThread.Start();
button2.Text="Start";
}
}
}
*********************************************************************************
1:다 Client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace client
{
public partial class Form1 : Form
{
TcpClient client;
StreamReader reader;
StreamWriter writer;
NetworkStream Stream;
Thread receive;
bool connect;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try{
client = new TcpClient();
client.Connect("localhost",5425);
Stream = client.GetStream();
connect = true;
reader = new StreamReader(Stream);
writer = new StreamWriter(Stream);
receive = new Thread(new ThreadStart(Recieve));
receive.Start();
}
catch(Exception ex){}
}
private void Recieve(){
try{
while (connect)
{
Thread.Sleep(1);
if (Stream.CanRead)
{
string temp = reader.ReadLine();
if (temp.Length > 0)
MessageBox.Show(temp);
}
}
}
catch(Exception e){}
}
private void button2_Click(object sender, EventArgs e)
{
writer.WriteLine("search");
writer.Flush();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
connect = false;
if (reader != null)
reader.Close();
if (writer != null)
writer.Close();
if (client != null)
client.Close();
if (receive != null)
receive.Abort();
}
private void button3_Click(object sender, EventArgs e)
{
writer.WriteLine("search1");
writer.Flush();
}
}
}
설정
트랙백
댓글
글
1) 프로젝트 작성
2) AP폴더 내에 파일 삽입
3) 빌드
자동배포 MSI와 Setup파일이 자동 생성된다
설정
트랙백
댓글
글
public void Download(string downURL) {
System.Net.WebClient request = new System.Net.WebClient();
byte[] newFileData = request.DownloadData(downURL);
string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
Response.Write(fileString);
}
-_-a 웹 클라이언트를 통한.. 파일 데이터 다운로드라 해야하나.. -_-a
뭐 그런 취지로 만든 것이답.
설정
트랙백
댓글
글
Size Bounds = Screen.PrimaryScreen.Bounds.Size;
MessageBox.Show(Bounds.ToString());
(결과) Width=2560, Height=1600
작업 표시줄 제외한 윈도우 영역 크기
Size WorkingArea = Screen.PrimaryScreen.WorkingArea.Size;
MessageBox.Show(WorkingArea.ToString());
(결과) Width=2560, Height=1570
※ 결과 : 2560*1600 해상도에서 테스트 한 결과
설정
트랙백
댓글
글
큰 차이는 없다 null Exception 처리를 한다 안한다의 차이 뿐이다
Parse를 살펴보면 문자를 Integer로 바꿔준다.
그리고 null이 입력될경우 ArgumentNullException 처리를 해준다.
Convert.ToInt32경우는 입력값이 null일경우 0을 반환한다.
그리고 나머지는 int.Parse와 같다.
설정
트랙백
댓글
글
C#에는 재미있는 클래스들이 많이 있다.
그 중 하나가 파일 시스템을 감시하는 FileSystemWatcher 클래스가 있다.
하지만 크로스 스레드 문제로 인한 오류가 발생하는데 필자는 다음과 같이 하여 이용하고 있다.
CheckForIllegalCrossThreadCalls = false;//크로스 스레드 자체를 무시.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = txtPath.Text;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnChanged);
여기에서 OnChanged는 메소드로 각 해당하는 상태가 일어났을 시 그 메소드를 실행한다.
watcher.EnableRaisingEvents = true;
설정
트랙백
댓글
글
WNet을 이용해야한다.
result 변수 값이 0 이면 접근 허용
공유 폴더 경로 문제는 1203 오류 코드
사용자/암호가 일치 하지 않다면 1326 오류 코드가 발생한다.
명시적으로 로컬 드라이브를 지정하고 싶다면 NETRESOURCE 구조체의 lpLocalName 필드에
드라이브 값을 설정이 가능하다.
이미 네트워크 드라이브 사용 중이라면 오류 코드 85
사용 가능한 로컬 드라이브 (Z, Y, X, W, 등의 순서) 이름의 선택을 시스템에게 맞기고 싶다면 flags 값에 0x80 을 주면 시스템이 적절한 로컬 드라이브 이름을 선택해 줄 것이다.
capacity 값은 공유 폴더의 경로를 담을 수 있도록 충분히 주어야 하지만
그렇지 않을 경우 오류 코드 234를 반환할 것이다.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct NETRESOURCE
{
public uint dwScope;
public uint dwType;
public uint dwDisplayType;
public uint dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}
[DllImport("mpr.dll", CharSet = CharSet.Auto)]
public static extern int WNetUseConnection(
IntPtr hwndOwner,
[MarshalAs(UnmanagedType.Struct)] ref NETRESOURCE lpNetResource,
string lpPassword,
string lpUserID,
uint dwFlags,
StringBuilder lpAccessName,
ref int lpBufferSize,
out uint lpResult);
public void setRemoteConnect(string strRemoteConnectString, string strRemoteUserID, string strRemotePWD)
{
int capacity = 64;
uint resultFlags = 0;
uint flags = 0;
try
{
if ((strRemoteConnectString != "" || strRemoteConnectString != string.Empty) &&
(strRemoteUserID != "" || strRemoteUserID != string.Empty) &&
(strRemotePWD != "" || strRemotePWD != string.Empty))
{
System.Text.StringBuilder sb = new System.Text.StringBuilder(capacity);
NETRESOURCE ns = new NETRESOURCE();
ns.dwType = 1;
ns.lpLocalName = null;
ns.lpRemoteName = @strRemoteConnectString;
ns.lpProvider = null;
int result = WNetUseConnection(IntPtr.Zero, ref ns, strRemotePWD, strRemoteUserID, flags, sb, ref capacity, out resultFlags);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
RECENT COMMENT